Site icon RibosoMatic

Imágenes aleatorias desde un directorio con PHP

Si desean mostrar imágenes de un directorio de su servidor de manera aleatoria, pues esta es una solución. Simplemente deberas configurar los tipos de imágenes que deseas que se muestren y el directorio donde están alojadas.

Algunas funciones usadas:

array_randSelecciona una o más entradas aleatorias de una matriz

opendirAbre un directorio

readdir — Devuelve el nombre del siguiente archivo leido desde el directorio

strrchr Encuentra la última aparición de un caracter en una cadena

unsetRemover una variable dada

Código

<?php
// extensiones a mostrar
$extensions = array('jpg','jpeg','gif','png','bmp');

// nombre del directorio
$folder_image_name = "/wp-content/uploads/upload/";

// ruta del directorio
$images_folder_path = $_SERVER['DOCUMENT_ROOT'].$folder_image_name;

// url del directorio
$url_to_folder = 'http://'.$_SERVER["SERVER_NAME"].$folder_image_name;

// array de imagenes
$images = array();

//srand((float) microtime() * 10000000); // Si es PHP Version < 4.2.0

// abrimos directorio y mostramos imagenes
if ($handle = opendir($images_folder_path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {

// obtener extension del archivo
$ext = strtolower(substr(strrchr($file, "."), 1));

// almacenamos en el array
if(in_array($ext, $extensions)){
$images[] = $url_to_folder.$file;
}
}
}
closedir($handle);
}

if(!empty($images)){ // si tenemos algo que mostrar...
$rand_key = array_rand($images, 1);
$src = $images[$rand_key];
echo "<img src='".$src."' align='absmiddle'>";

// mostrar una segunda imagen diferente a la primera
unset($images[$rand_key]);
$rand_key = array_rand($images, 1);
$src = $images[$rand_key];
echo "<br /><br /><img src='".$src."' align='absmiddle'>";
}else{
// nada que mostrar
echo 'No se encontraron imagenes en <strong>'.$images_folder_path.'</strong>';
}
?>

Vía BitRepository