Ando con un sistema para redimensionar imagenes con PHP en una web que ando montando.
El asunto es que el codigo lo pillo de libro "Introduccion a Ajax con PHP" (capitulo 7). El codigo en concreto es para hacer una galeria de imagenes, una foto en grande arriba y abajo miniaturas de las imagenes de la galeria.
Total que hace todo el proceso bien exceptuando que las imagenes que da por resultado son completamente negras, con el tamaño esperado eso si, pero negras.
En algun otro post (no solo de este foro) he visto que se hablaba de si la direcion al folder destino no era correcto y cosas por el estilo...pero la funcion esta clavada a la del libro exceptuando las direcciones de carpeta (que se marcan por variable global), pero el codigo en si es el mismo.
Hay una cosa que no cuadra en el libro pero que en mi codigo modifico ligeramente: para la imagen grande utiliza la imagen original en el src y las dimensiones de la imagen redimensionada resultante y luego para las imagenes "chicas" utiliza la imagen redimensionada como src y para las dimensiones (vamos, que el sistema de redimensionado tiene que funcionar porque la imagen resultante si son utilizadas)
He revisado y la libreria GD esta activada.
He probado con distintas extensiones y no es algo exclusivo de una extension.
Os dejo el codigo a ver si se os ocurre donde puede esta el fallo.
Config.php
Código:
<? //Altura y anchuras de imagenes y miniaturas $GLOBALS['maxWidth']= 400; $GLOBALS['maxHeight']= 400; $GLOBALS['maxWidthThumb']=100; $GLOBALS['maxHeightThumb']=100; $GLOBALS['barImgFolder']= "Pics/bar"; $GLOBALS['allowedfiletypes'] = array("jpg","jpeg","gif","png"); $GLOBALS['barImgThumbsFolder']= "Pics/bar/thumbs"; ?>
barFunciones.php (funcion concreta)
Código:
function createthumb($img,$mwidth, $mheight, $ext="_th") { if(is_file( $GLOBALS['barImgFolder']."/".$img)) { if($cursize = getimagesize($GLOBALS['barImgFolder']."/".$img)) { $currentWidth = $cursize[0]; $currentHeight = $cursize[1]; //Establece las dimensiones de la nueva imagen $newSize = setWidthHeight ( $currentWidth, $currentHeight, $mwidth, $mheight); //Una vez establecidos los limites, averiguar el tipo de archivo $thepath = pathinfo( $GLOBALS['barImgFolder']."/".$img); //Configurar la miniatura. $dst = imagecreatetruecolor( $newSize[0], $newSize[1]); //Crear el nombre del archivo con subfijo incluido. $filename = str_replace(".".$thepath['extension'],"",$img); $types = array( 'jpg' => array('imagecreatefromjpeg', 'imagejpeg'), 'jpeg' => array('imagecreatefromjpeg', 'imagejpeg'), 'gif' => array('imagecreatefromgif', 'imagegif'), 'png' => array('imagecreatefrompng', 'imagepng')); $src = $types[$thepath['extension']][0]($GLOBALS['barImgFolder']."/".$img); //Crea la copia. imagecopyresampled($dst, $src, 0,0,0,0, $newsize[0], $newsize[1], $cursize[0], $cursize[1]); $retfile = $GLOBALS['barImgThumbsFolder']."/".$filename.$ext.".".$thepath['extension'].""; //Crear la miniatura $types[$thepath['extension']][1]($dst, $retfile); return $retfile; } else{ echo "No image found"; } } else{ echo "Imagen no encontrada"; } }
Codigo que muestra las imagenes
Código:
//Imagen principal $headImg = getImageAtIndex($imgArray, 0); if(is_file($GLOBALS['barImgFolder']."/".$headImg)) { $thumb = createthumb($headImg, $GLOBALS['maxWidth'],$GLOBALS['maxHeight'], "_big"); if(is_file($thumb) && file_exists($thumb)) { if($size = getimagesize($thumb)) { ?> <div class="left" id="photoHead_wp"> <img src="<? echo $thumb; ?>" style="widht:<? echo $size[0]; ?>px; height: <? echo $size[1]; ?>px"> </div> <? } } } ?>