Redimensionar en PHP a tamaño fijo
Escrito por Alex Barros Ver también Guía básica para editar imágenes en php con GD
Esta es una técnica para redimensionar imágenes a un tamaño fijo (aunque no guarde proporción), sin distorsionar la imágen.
No, no se trata del escalado líquido. Esa técnica es demasiado compleja. Se trata de recortar la imágen para adaptarla a la nueva resolución, perdiendo el mínimo espacio posible.

Foto de Basajaun en Flickr Licencia CC(by-nc-sa)
Para hacer esto, he desarrollado este algoritmo, que paso a compartir con todos para que lo uséis como os de la gana (requiere Biblioteca GD)
-
function resizeFit($im,$width,$height) {
-
//Original sizes
-
$ow = imagesx($im); $oh = imagesy($im);
-
-
//To fit the image in the new box by cropping data from the image, i have to check the biggest prop. in height and width
-
if($width/$ow > $height/$oh) {
-
$nw = $width;
-
$nh = ($oh * $nw) / $ow;
-
$px = 0;
-
$py = ($height – $nh) / 2;
-
} else {
-
$nh = $height;
-
$nw = ($ow * $nh) / $oh;
-
$py = 0;
-
$px = ($width – $nw) / 2;
-
}
-
-
//Create a new image width requested size
-
$new = imagecreatetruecolor($width,$height);
-
-
//Copy the image loosing the least space
-
imagecopyresampled($new, $im, $px, $py, 0, 0, $nw, $nh, $ow, $oh);
-
-
return $new;
-
}
Cómo utilizar
Si no estás familiarizado con la edición de imágenes en PHP, no te preocupes. Para utilizar la función de arriba, tenemos que pasarle como parámetro una imágen tipo resource de GD y dos números indicando el ancho y alto que queréis forzar a la foto.
Para que se vea, hay que editar las cabeceras HTTP indicando que el contenido es una imágen. Y a este archivo de imágen (aunque sea un PHP) se le puede llamar desde la etiqueta img de HTML. Dejemos que hable el código:
imagen.php
-
//Primero creo el resource de la imagen desde el original en JPEG
-
$im = imagecreatefromjpeg(‘original.jpg’);
-
-
//Ahora uso la función antes definida, con unos parámetros de ancho y alto que yo quiera
-
$resized = resizeFit($im, 100, 150);
-
-
//Indico en la cabecera HTTP que es una imagen
-
-
//Por último exporto la nueva imagen
-
imagepng($resized);
miPagina.html
-
<p>Esta es mi foto redimensionada a 100 x 150:</p>
-
<img src="imagen.php">
Puedes ver un ejemplo en …
Esta técnica la uso en Gpsia para mostrar las imágenes al tamaño que yo le diga, sin que se vean distorsionadas. Échale un ojo, y de paso ves las rutas tan increíbles que está subiendo la gente.
Categorias: Código, Diseño, Imagen Digital, PHP |
5 comentarios »














Respeta el copyleft