lunes, 17 de mayo de 2010

Función para crear thumbnail en php

Función para crear thumbnail con las dimensiones deseadas en PHP

function subirImagenRecortada($imagen,$rutaImg,$nombre,$alturaMaxima,$anchuraMaxima){
$varrand = $nombre; //nombre aleatorio
$varallw = array("image/jpeg","image/pjpeg"); //tipo de imagnes
if (is_uploaded_file($imagen["tmp_name"])) {
$varname = $imagen['name'];
$vartemp = $imagen['tmp_name'];
$vartype = $imagen['type'];
$ext = strrchr($imagen['name'],'.');
//Comprueba que el archivos subir es JPG
if (in_array($vartype, $varallw) && $varname != "") {
$varname = "p_".$varrand.$ext;
$varpath=$rutaImg;
if (copy($vartemp, $rutaImg.$varname)) {
$filename = $varpath.$varname;
list($width, $height) = getimagesize($filename);


/* Recortar con lado de 90 px */
$ancho=$anchuraMaxima;
$alto=$alturaMaxima;
list($width, $height) = getimagesize($filename);
$diferencia_ancho = $width/$ancho;
$diferencia_alto = $height/$alto;

if($diferencia_ancho < $diferencia_alto) {
$nuevo_ancho = $ancho;
$prop = $nuevo_ancho/$width;
$nuevo_alto = round($height*$prop);
$dist_x = 0;
$dist_y = ($alto-$nuevo_alto)/2;
}else {
$nuevo_alto = $alto;
$prop = $nuevo_alto/$height;
$nuevo_ancho = round($width*$prop);
$dist_x = ($ancho-$nuevo_ancho)/2;
$dist_y = 0;
}
$thumb = imagecreatetruecolor($ancho, $alto);
imagealphablending($thumb, false);
$source = imagecreatefromjpeg($filename);
imagecopyresampled($thumb, $source, $dist_x, $dist_y, 0, 0, $nuevo_ancho, $nuevo_alto, $width, $height);
imagejpeg($thumb, $varpath.$varname);
imagedestroy($thumb);

return $varname;
} else {
echo "Error al subir el archivo";
}
}else {
echo "No se puede subir ese archivo";
}
}
return $nameold;
}