• User Attivo

    Php random image

    Salve ragazzi, ho trovato in rete questo script che randomizza le foto perse da una cartella, cercherò brevemente di essere chiaro nel problema.
    In pratica includo lo script in un punto di una pagina e vorrei che le foto caricate siano ridimenzionate in percentuale % ma non capisco come fare.
    Cosa devo modificare affinchè funzioni correttamente?
    Grazie di cuore.
    Il codice originale è questo:

    <?

    $cartella="img/banneroni/";
    //Array di tutte le estensioni valide che si vogliono caricare (bmp,gif,jpg,png)
    $estensioni=array('gif','jpg','bmp');
    //***************************************************//
    $dir=opendir($cartella) or die("Attenzione, impossibile aprire la cartella ".$cartella);
    $immagini=array();
    $misure=array();
    while(false !== ($file=readdir($dir))) {
    for($i=0;$i<count($estensioni);$i++){
    $estensione=substr($file,(strlen($file)-3),strlen($file));
    if(in_array($estensione,$estensioni)){
    $immagini[]=$file;
    $misure[]=getimagesize($cartella.$file);
    }
    }
    }
    if(count($immagini)==0) die("Attenzione, la cartella indicata non contiene immagini compatibili con le estensioni inserite.<br> Provare a controllare l'esattezza delle estensioni e della directory indicata nella variabile 'cartella'");
    $indice=rand(0,(count($immagini)-1));
    print '<img src="'.$cartella.$immagini[$indice].'" '.$misure[$indice][3].' alt="'.$immagini[$indice].'">';
    ?>


  • User Attivo

    Prova in questo modo:

    [php]
    //$misure[]=getimagesize($cartella.$file);
    list($width, $height, $type, $attr) = getimagesize($cartella.$file);

    //...

    $scala = 50; //50%
    $prc_width = (($width / 100) * $scala);
    $prc_height = (($height / 100) * $scala);
    print '<img src="'.$cartella.$immagini[$indice].'" width="'.$prc_width.'px" height="'.$prc_height.'px" alt="'.$immagini[$indice].'">';
    [/php]

    Oppure semplicemente:

    [php]
    print '<img src="'.$cartella.$immagini[$indice].'" width="50%" height="50%" alt="'.$immagini[$indice].'">';
    [/php]
    Ciao!


  • User Attivo

    Ciao,
    inserendo una immagine con attributi width e height in percentuale le dimensioni vengono calcolate non come percentuale di quelle dell'immagine, ma di quelle del contenitore.
    Ad esempio, se nella nostra pagina abbiamo soltanto un'immagine con dimensioni 100%

    
    <html>
    <head>
    <title>Test</title>
    </head>
    <body>
    <img src="immagine.jpg" width="100%" height="100%" />
    </body>
    </html>
    
    

    questa occupa tutta la finestra, ovvero 100% del body (tenendo conto di margini e padding).

    Quindi la soluzione corretta è la prima indicata da Sups.

    Alessandro


  • User Attivo

    Grazie ragazzi, ho provato ma non funziona sarà che sbaglio qualcosa, il codice come andrebbe corretto?

    avevvo modificato in questo modo:

    <?

    $cartella="img/banneroni/";
    //Array di tutte le estensioni valide che si vogliono caricare (bmp,gif,jpg,png)
    $estensioni=array('gif','jpg','bmp');
    //***************************************************//
    //$misure[]=getimagesize($cartella.$file);
    list($width, $height, $type, $attr) = getimagesize($cartella.$file);
    $dir=opendir($cartella) or die("Attenzione, impossibile aprire la cartella ".$cartella);
    $immagini=array();
    $misure=array();
    while(false !== ($file=readdir($dir))) {
    for($i=0;$i<count($estensioni);$i++){
    $estensione=substr($file,(strlen($file)-3),strlen($file));
    if(in_array($estensione,$estensioni)){
    $immagini[]=$file;
    $misure[]=getimagesize($cartella.$file);
    }
    }
    }
    if(count($immagini)==0) die("Attenzione, la cartella indicata non contiene immagini compatibili con le estensioni inserite.<br> Provare a controllare l'esattezza delle estensioni e della directory indicata nella variabile 'cartella'");
    $indice=rand(0,(count($immagini)-1));
    $scala = 50; //50%
    $prc_width = (($width / 100) * $scala);
    $prc_height = (($height / 100) * $scala);
    print '<img src="'.$cartella.$immagini[$indice].'" width="'.$prc_width.'px" height="'.$prc_height.'px" alt="'.$immagini[$indice].'">';
    ?>


  • User Attivo

    Ciao,
    correggi così:
    [PHP]
    ...
    $indice=rand(0,(count($immagini)-1));
    list($width, $height, $type, $attr) = getimagesize($cartella.$immagini[$indice]);
    $scala = 50;
    ...
    [/PHP]

    Alessandro


  • User Attivo

    Grazie Alessandro, ti vorrei chiedere ancora volendo forzare la larghezza e altezza in px come posso modificare questo script?


  • User Attivo

    Ciao,
    nello script larghezza e altezza sono impostate al 50% del valore originale in queste due righe di codice:
    [PHP]
    $prc_width = (($width / 100) * $scala);
    $prc_height = (($height / 100) * $scala);
    [/PHP]
    Ti basta modificare queste due righe assegnando a $prc_width e $prc_height i valori che ti servono.

    Alessandro