Thumb con PHP y si es necesario recortar la imagen
Escrito por giancarloApr 2
Con PHP y su librerÃa GD podemos crear thumbnail de una imagen fácilmente. Vamos a crear una función que se llame CrearThumb y le mandaremos los siguientes parámetros: Imagen Original, Imagen de Destino, Ancho Original, Alto Original, Nuevo Ancho, Nuevo Alto y La Calidad de la Imagen.
Al momento de llamar a esta funcion, en los dos primeros parámetros hay que dar el nombre de los archivos pero con la ruta absoluta del servidor.
function CreateThumb($pImageOrigen, $pImageDestino, $pWidth, $pHeight, $pMaxWidth, $pMaxHeight, $pCalidad){ // SI WIDTH ES MAS ALTO, LO CORTO POR WIDTH Y VICEVERSA if($pWidth > $pHeight){ $_porcentaje = $pMaxHeight*100/$pHeight; $_height = $pMaxHeight; $_width = ceil($_porcentaje*$pWidth/100); }else{ $_porcentaje = $pMaxWidth*100/$pWidth; $_width = $pMaxWidth; $_height = ceil($_porcentaje*$pHeight/100); } $_pic = @imagecreatefromjpeg($pImageOrigen); $_tmp = imagecreatetruecolor($pMaxWidth, $pMaxHeight); imagecopyresized($_tmp, $_pic, 0, 0, 0, 0, $_width, $_height, $pWidth, $pHeight); imagejpeg($_tmp, $pImageDestino, $pCalidad); imagedestroy($_pic); imagedestroy($_tmp); } |
Con esta función se creará un thumb. Claro que si los tamaños originales de la imagen son proporcionales a los nuevos tamañas de la imagen, no cortará la imagen. Pero si ese no es el caso, la imagen será cortada luego de ser reducida lo máximo posible.
Hagan la prueba!

hola antes que nada gracias por el aporte, pero consulto, intenté usar la función y lo hice de manera siguiente:
$c= “select * from usuarios “;
$r= mysql_query($c) or die (mysql_error());
$n= mysql_num_rows($r);
$row= mysql_fetch_array($r);
$image=($row['imagen']);
$pImageOrigen= $image;
echo $pImageOrigen; //esto lo puse solo a modo de prueba
$pImageDestino= $image; /* se me ocurrió que debia hacerlo asi, no se si está bien*/
$pWidth= 40; // no se si estaran bien asignados los parámetros
$pHeight= 40;
$pMaxWidth= 40;
$pMaxHeight= 40;
$pCalidad= 100;
function CreateThumb($pImageOrigen, $pImageDestino, $pWidth, $pHeight, $pMaxWidth, $pMaxHeight, $pCalidad){
// SI WIDTH ES MAS ALTO, LO CORTO POR WIDTH Y VICEVERSA
if($pWidth > $pHeight){
$_porcentaje = $pMaxHeight*100/$pHeight;
$_height = $pMaxHeight;
$_width = ceil($_porcentaje*$pWidth/100);
}else{
$_porcentaje = $pMaxWidth*100/$pWidth;
$_width = $pMaxWidth;
$_height = ceil($_porcentaje*$pHeight/100);
}
$_pic = @imagecreatefromjpeg($pImageOrigen);
$_tmp = imagecreatetruecolor($pMaxWidth, $pMaxHeight);
imagecopyresized($_tmp, $_pic, 0, 0, 0, 0, $_width, $_height, $pWidth, $pHeight);
imagejpeg($_tmp, $pImageDestino, $pCalidad);
imagedestroy($_pic);
imagedestroy($_tmp);
}
echo CreateThumb($pImageOrigen, $pImageDestino, $pWidth, $pHeight, $pMaxWidth, $pMaxHeight, $pCalidad);
/*intenté visualizar la imagen mediante un echo a la función pero el resultado fue nulo, o sea no se visualizó nada, que es lo que estoy haciendo mal? agradecerÃa muchisimo la ayuda para poder resolver el problema, saludos y mil gracias/*
Pero claro que no vas a poder hacerle un echo, mira solo si la imagen fue guardada…