Resizeador de imagenes (II)
Como ya sabéis, ando haciendo una galería para otra web, por lo que me hice una función para cambiar el tamaño fácilmente, y he pensado en compartirla, porque fijo que a alguno os viene bien…
< ?
function resizear_imagen ($imagen,$img_anch_max,$img_alto_max){
$extension = explode(".",imagen);
$num = count($extension)-1;
$extension = $extension[$num];
$extension = strtolower($extension);
switch ($extension){
case "jpg": if (ImageCreateFromJpeg($imagen)) { $img = ImageCreateFromJpeg($imagen); } else { $errores = "Si"; } break;
case "jpeg": if (ImageCreateFromJpeg($imagen)) { $img = ImageCreateFromJpeg($imagen); } else { $errores = "Si"; } break;
case "gif": if (ImageCreateFromGif($imagen)) { $img = ImageCreateFromGif($imagen); } else { $errores = "Si"; } break;
case "png": if (ImageCreateFromPng($imagen)) { $img = ImageCreateFromPng($imagen); } else { $errores = "Si"; } break;
}
//CALCULO LAS PROPORCIONES
$prop_imagen = getimagesize($imagen);
$ancho = $prop_imagen[0];
$alto = $prop_imagen[1];
if ($ancho >= $alto){
$proporcion = $ancho/$alto;
$ancho_dev = $img_anch_max;
$alto_dev = $ancho_dev/$proporcion;
if ($alto_dev > $img_alto_max){
$alto_dev = $img_alto_max;
$ancho_dev = $alto_dev * $proporcion;
}
} else {
$proporcion = $alto/$ancho;
$alto_dev = $img_alto_max;
$ancho_dev = $alto_dev/$proporcion;
if ($ancho_dev > $img_anch_max){
$ancho_dev = $img_anch_max;
$alto_dev = $ancho_dev * $proporcion;
}
}
//CREO LA IMAGEN DEVUELTA
$image = imagecreatetruecolor($ancho_dev, $alto_dev);
ImageCopyResized($image, $img, 0, 0, 0, 0, $ancho_dev, $alto_dev, $ancho, $alto);
if ($errores == "Si"){
return "";
} else{
return $image;
}
}
?>
Espero comentarios y demás 🙂
Ya te enseñé mi código 😉
Si se copia y se pega tal cual, no funcionará. WordPress cambia las comillas dobles normales por unas torcidas. Creo que se me entiende, ¿no? xD
Creo que no es wordpress, que es el blockquote,no?
De todos modos, estaría bien que la gente tratase de entenderlo en lugar de limitarse a copiar y pegar código 😀
Algunas cosas que mejorarÃa:
1) Para obtener la extensión basta con:
$extension = array_pop(explode(".",$imagen));
2) Los «case» los puedes optimizar un poco, te pongo el ejemplo de como seria el del JPG:
case âjpgâ?: if (!($img = ImageCreateFromJpeg($imagen))) { $errores = âSiâ?; } break;
Asà te ahorras el llamar dos veces a la misma función.
Salu2
y si el archivo contiene puntos? (lala.lala.gif), no funcionaría.
si no recuerdo mal hay una función en php que hace una especie de explode pero de atrás hacia delante, busca :>
bueno, con array_pop no fallaría.
(no sabía que hacía array_pop :D).
saludos,
1.siempre subo fotos , y antes lo debo de redimensionar a parametros definidos (ejem: 250 px de ancho, 300 px de alto)
2. cuando encuentro fotos de 450 px ancho y 490 px de alto, tengo que redimensionar pero en base a un lado (ejem: ancho)
y obtendra algo asi como:
250 px de ancho y 280 px de alto.
1.como podria aplicar tu script
2.donde coloco los parametros fijos
3.en tu script esta considerado solo referenciar a un solo lado, porque si no es asi, la imagen se distorsionaria?
freddy