03/11/2012
Recentemente un utente mi ha richiesto delle informazioni su un vecchio articolo intitolato "Visualizzare immagini random da una cartella" e pubblicato su questo sito nel (tecnologicamente) lontano 2007; la segnalazione mi ha permesso di effettuare un aggiornamento del codice proposto che mancava, per esempio, di un controllo sull'estensione PNG; "M." però mi chiedeva se fosse possibile estrarre più di una singola immagine casuale da una directory, ma a questo scopo una semplice modifica non sarebbe bastata.
Così ho deciso di riscrivere l'applicazione rivedendo le parti relative al controllo delle estensioni, questa volta operato con la funzione pathinfo(), al conteggio dei file visualizzabili e all'estrazione delle immagini; il risultato della revisione è stato il seguente:
// definiamo il percorso della cartella d'origine $path = "img/"; // stabiliamo i formati consentiti $formati = array('gif','jpg','bmp','png'); // apriamo la cartella che contiene le immagini $open = opendir($path); // leggiamo tutte le immagini con un ciclo e // e estraiamo soltanto quelle con estensione consentita $img = array(); while(false !== ($f=readdir($open))) { $path_info = pathinfo($f); if(in_array($path_info['extension'],$formati)){ $img[]=$f; } } // contiamo le immagini disponibili $count = count($img); // se il risultato del conteggio è maggiore di 0... if($count!=0) { // ...stabiliamo un numero massimo di immagini da visualizzare $limit = 6; // se però il numero delle immagini è inferiore al valore massimo... if($count < $limit){ // ...allora le visualizzeremo tutte $limit = $count; } // procediamo con l'estrazione random for ($i = 1; $i <= $limit; ++$i) { $info = rand(0,($count-1)); echo "<img src=\"".$path.$img[$info]."\">"; } }else{ // notifica in caso di assenza di immagini echo "Non sono presenti immagini nella directory."; }
In questo modo, posto per esempio di voler estrarre un massimo di 6 immagini random alla volta, lo script controllerà il numero di quelle dispobili nella cartella e, se esso dovesse essere inferiore al limite imposto, le estrarrà tutte.
© Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.