Ver Mensaje Individual
  #7 (permalink)  
Antiguo 22/06/2007, 17:42
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Generador de imagenes aleatorias PHP

Cita:
Iniciado por GatorV Ver Mensaje
[...]evita poner imagenes tan grandes en el foro[...]
Tienes razon GatorV, es un detalle que pase por alto. Lo que pasa es que el script saca las imagenes de una carpeta, y los tamaños de esas imagenes son muy variados. Cuando puse el mensaje, se mostró una imagen pequeña. Gracias por editar el mensaje

ivor, te explicare a grandes razgos el codigo por partes, ya que no esta muy dificil de entender:

Código PHP:
//Indicamos el folder donde tenemos almacenadas las imagenes
$folder '.';
 
//Creamos un array con las extensiones comunes de una imagen
$extList = array();
$extList['gif'] = 'image/gif';
$extList['jpg'] = 'image/jpeg';
$extList['jpeg'] = 'image/jpeg';
$extList['png'] = 'image/png';
 
//La variable $img sera la que contenga la ruta de la imagen
$img null
$img tiene un valor de null debido a que posteriormente se comprobara este valor. Si no ha cambiado, quiere decir que la imagen no ha podido ser cargada. Hasta aqui, aun no se ha hecho nada

Código PHP:
if (substr($folder,-1) != '/') {
    
$folder $folder.'/';

Esto es solo para ponerle una barra "/" al folder si no ha sido colocada.

Código PHP:
if (isset($_GET['img'])) {
    
//La función pathinfo devuelve información sobre la ruta de 
    //un archivo (PHP.net)
    
$imageInfo pathinfo($_GET['img']);
 
    
//En este if comprobamos si el archivo corresponde a 
    //un tipo de imagen válido, y si la imagen existe.
    //Esto lo hacemos verificando si la extension del archivo
    //se encuentra en el array creado al inicio. Si es una
    //imagen y existe, entonces esa será la imagen mostrada,
    //y le asignamos a $img la ruta de esa imagen como valor.
    
if (
        isset(
$extList[strtolower($imageInfo['extension'])]) &&
        
file_exists($folder.$imageInfo['basename'])
    ) {
        
$img $folder.$imageInfo['basename'];
    }

El codigo lo diseñe para que tambien se pudiera pasar el nombre de la imagen que se desea abrir por la url ($_GET['img']).
dsd

Código PHP:
//Si no se paso una imagen por la url, tendremos que escoger un archivo
//aleatoriamente dentro de nuestra carpeta ($folder)
else {
 
    
//Este array guardara los nombres de las imagenes que 
    //hay en la carpeta
    
$fileList = array();
 
    
//La funcion opendir sirve para Abrir un gestor de 
    //directorio, en este caso, el folder donde tenemos 
    //la imagenes (PHP.net)
    
$handle opendir($folder);
 
    
//Una vez abierto el gestor, la funcion readdir se encarga
    //de Leer una entrada desde un gestor de directorio (PHP.net).
    //Esto significa que obtendremos los nombres de los 
    //archivos que hay en el directorio como si se estuviera
    //hablando del resultado de una consulta SQL
    
while ( false !== ( $file readdir($handle) ) ) {
        
//Obtenemos la informacion del archivo
        
$file_info pathinfo($file);
        
//Verificamos si es una imagen
        
if (
            isset( 
$extListstrtolower$file_info['extension'] ) ] )
        ) {
            
//Si es una imagen, guardamos el nombre de archivo
            //en el array creado para ello
            
$fileList[] = $file;
        }
    }
    
//closedir para Cerrar un gestor de directorio (PHP.net)
    
closedir($handle);
 
    
//Vemos entonces cuantas imagenes hay en el folder,
    //contando para ello los datos que hay en el array
    //$fileList
    
$ntotal count($fileList);
    if (
$ntotal 0) {
        
//Con la funcion rand() escogemos una imagen al azar
        
$imageNumber rand(0,$ntotal-1);
        
$img $folder.$fileList[$imageNumber];
    }

Hasta aqui ya tenemos la imagen que vamos a mostrar.

Código PHP:
//Si la imagen existe (variable $img), mostramos.
if ($img!=null) {
    
$imageInfo pathinfo($img);
    
$contentType 'Content-type: '.$extList$imageInfo['extension'] ];
    
header ($contentType);
    
readfile($img);
} else {
    
//Si no existe, mostramos error, creando para ello una
    //imagen con un texto que muestra error:
    
if ( function_exists('imagecreate') ) {
        
header ("Content-type: image/png");
        
$im = @imagecreate (300100)
            or die (
"HUBO UN ERROR AL PROCESAR LA IMAGEN .:. MYOKRAM");
        
$background_color imagecolorallocate ($im255255255);
        
$text_color imagecolorallocate ($im0,0,0);
        
imagestring ($im255,  "HUBO UN ERROR AL PROCESAR LA IMAGEN .:. MYOKRAM"$text_color);
        
imagepng ($im);
        
imagedestroy($im);
    }

Si no existe la imagen, se muestra algo asi: http://myokram.coolinc.info/imagen.j...?img=texto.jpg


Espero haber sido claro, eso es todo

Un saludo,