Script para generar imágenes redimensionadas sin deformar
Publicado el: 17/08/2009 - 10:58Uno de los grandes problemas con los que nos encontramos cuando desarrollamos cualquier web con un CMS por detrás o cualquier diseño web es que el usuario no está habituado a subir imágenes tratadas y redimensionadas para la web. Por lo general se suele generar un thumbnail (miniatura) por cada imagen que se sube a través del gestor de contenidos pero a veces queremos mostrar la imagen a unas dimensiones definidas, cortándose o escalándose la imagen sin deformaciones en diferentes contextos.
Últimamente estoy usando image.php -un pequeño script desarrollado por Shifting Pixel que resuelve estos problemas con los que me he encontrado habitualmente y seguro muchos de vosotros-. Genera la miniatura a las dimensiones que queramos al vuelo y las cachea mientras no cambie la fuente.
Con este pequeño script a partir de una imagen subida (generalmente de 2 mb), podremos generar sin deformar y escaladas a la perfección todas las réplicas de la imagen que necesitemos (para listados, páginas principales, fichas de producto, contenidos en cesta, imágenes ampliadas. Para cualquier tienda online, portal de contenidos o un simple blog nos vendrá a la perfección.
¿Cómo usar image.php?
Usar image.php no tiene ninguna ciencia, sólo deberemos instalarlo en la raíz del sitio, dar los permisos adecuados al directorio para cachear las imágenes y las llamadas las deberemos hacer de la siguiente forma:
<img src="image.php?width=ancho&cropratio=4:3&image=/url_foto.jpg" alt="Texto alternativo de la imagen" />
Lo más interesante de este script es que en cropratio podemos definir las proporciones de la imagen. Como suele suceder en nuestros diseños alguna vez necesitaremos las imagenes cuadradas cropratio=1:1, otras para portadas y destacados en formatos similares al cine cropratio=4:3 o cropratio=16:9 e incluso los más quisquillosos de la cosmética y proporcionalidad podrán mostrar sus imágenes con cropratio=1.6180339887:1
PHP 5.1.0+ con liberría GD: http://shiftingpixel.com/downloads/image-1.4.1.zip
Aníbal el día 17/08/2009 - 13:02
Buen script, sobretodo por el tema de cacheo. Tras utilizarlo he visto que fallaban las dimensiones de recorte en algunas imagenes en 1px en alto o ancho.
Falla cuando redondea al alza con la funcion ceil() por lo que he quitado la funcion ceil() en estas lineas:
if ($xRatio * $height < $maxHeight)
{ // Resize the image based on width
$tnHeight = ceil($xRatio * $height);
$tnWidth = $maxWidth;
}
else // Resize the image based on height
{
$tnWidth = ceil($yRatio * $width);
$tnHeight = $maxHeight;
}
Dejándolo así:
if ($xRatio * $height < $maxHeight)
{ // Resize the image based on width
$tnHeight = $xRatio * $height;
$tnWidth = $maxWidth;
}
else // Resize the image based on height
{
$tnWidth = $yRatio * $width;
$tnHeight = $maxHeight;
}
y por lo que he probado funciona perfectamente ya todo.
JMLeon el día 15/02/2010 - 11:58
Yo utilizo uno parecido, pero en vez del ratio tú le das las dimensiones a los que lo quieres, y él te lo redimensiona al tamaño que necesitas. Si no le das el alto que quieres, redimensiona siguiendo las proporciones que tenga la imagen.
Luego con htaccess creamos una regla para mejorar el SEO en estas imágenes.
hugo el día 31/08/2010 - 02:39
No funciona no muestra la imagen y ya revise parece que todo esta bien conforme lo comentan pero no sirve !! porfa diganme en que puedo estar fallando.
Saludos.
Ruben el día 31/08/2010 - 11:54
Hola Hugo, revisa tu versión de PHP y también si tienes la librería GD+
http://shiftingpixel.com/2008/03/03/smart-image-resizer/
Jonathan Retamal el día 06/02/2012 - 00:40
Muy bueno el Post llevo como 6 meces buscando esto y no lo encontraba por ninguna parte. Lo mejor es que sirve para cualquier tamaño es exelente :) si tuviera que puntuar el post del 1 al 10 te doy un 11 :D
Javier Gálvez el día 23/11/2012 - 17:36
Solo vale para versiones de php superiores a la 5.1, aunque la idea es buena.
Escribe un comentario
* = campos obligatorios