Redimensión de imágenes con PHP
Hoy vamos a hablar acerca de la redimensión de imágenes. Hay muchas cosas que decir acerca de esto, de hecho podríamos escribir un libro porque este tema da mucho que hablar por la gran cantidad de opciones y configuraciones que hay que tener en cuenta.
Básicamente tenemos dos opciones a la hora de redimensionar, la más común pero limitada es la librería GD que viene normalmente instalada en todos los servidores junto con PHP, y luego tenemos ImageMagick que últimamente se está empezando a ver en los nuevos servidores que nos porporcionan los ISP.
En el caso de la librería GD, debemos tener en cuenta que consume muchos recursos del servidor, por lo que es bastante lento. Esto provoca que si el archivo de origen es muy grande tengamos problemas de memoria memory_limit y tiempo de ejecución max_execution_time. Podemos modificar los valores del php.ini o mediante el archivo .htaccess, pero aún así no podremos aplicar esta librería para archivos más grandes de 1 ó 2 MB.
Otra limitación es que no podemos utilizar un archivo TIFF como base, aunque la librería soporta bastantes formatos gif, jpeg, png, ... En caso de necesitar redimensionar archivos TIFF o con un gran tamaño deberemos utilizar Imagemagick.
A continuación incluyo un ejemplo para redimensionar una imagen jpeg con la librería GD que ha sido subida mediante un upload de archivos. El script redimensionará la imagen a un ancho máximo de 200 píxeles y la copiará a la carpeta que especifiquemos.
-
$anchura_maxima = 200; //ancho máximo en pixeles
-
$nombre_temporal = $_FILES['foto']['tmp_name'];
-
$nombre_archivo = $_FILES['foto']['name'];
-
-
//calculo de altura
-
$ratio = ($datos[0] / $anchura_maxima);
-
$altura = ($datos[1] / $ratio);
-
-
$img = @imagecreatefromjpeg($nombre_temporal);
-
$thumb = imagecreatetruecolor($anchura_maxima,$altura);
-
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura_maxima, $altura, $datos[0], $datos[1]);
-
ImageJPEG($thumb, "fotos/".$nombre_archivo,75); //copiamos la imagen JPG con compresión 75
-
imagedestroy($thumb);
-
imagedestroy($img);
Salu2

0 Comments Send your comment ↓
If comments are open, but there are no comments
Leave a Reply