Cita:
Iniciado por GatorV
[...]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( $extList[ strtolower( $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 (300, 100)
or die ("HUBO UN ERROR AL PROCESAR LA IMAGEN .:. MYOKRAM");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$text_color = imagecolorallocate ($im, 0,0,0);
imagestring ($im, 2, 5, 5, "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,