PHP, junto con la librería GD, permiten la creación y manipulación de imágenes en tiempo real con gran facilidad y lograr unos resultados de una calidad más que aceptable.
Dependiendo de la versión de PHP y la librería GD, es posible crear y manipular imágenes de tipo JPEG, GIF, PNG y WBM, aunque en las últimas versiones no hay soporte para gráficos de tipo GIF. Para saber que formatos soporta tu instalación de PHP solo tienes que ejecutar el siguiente script:
<?php
if (imagetypes() & IMG_PNG) echo 'Formato PNG soportado.<br>';
if (imagetypes() & IMG_JPG) echo 'Formato JPG soportado.<br>';
if (imagetypes() & IMG_GIF) echo 'Formato GIF soportado.<br>';
if (imagetypes() & IMG_WBMP) echo 'Formato WBMP soportado.<br>';
?>
Al ser el más complejo (o al menos completo) de realizar, haremos una función para redimensionar y ajustar la calidad de imágenes JPEG. Crear una función similar para imágenes PNG o WBMP debería resultaros sencillo.
La función recibe 5 parámetros:
A propósito de la calidad de las imágenes, debemos tener en cuenta que si la calidad de la imagen original era de por ejemplo el 75% y si especificamos que la calidad de la imagen redimensionada sea del 85%, la calidad de esta no mejorara, se mantendrá igual y solo conseguiremos incrementar el tamaño en bytes de la imagen. Por lo tanto, antes de aplicar esta función a una imagen debemos conocer su calidad actual.
Siguiendo con el mismo tema, los valores de calidad o compresión que se le puede aplicar a una imagen JPEG van del 0% al 95%. Lo lógico sería que fueran del 0% al 100%, pero por algún extraño motivo, la imagen resultante de una compresión del 97% es idéntica a la imagen comprimida al 95%.
A continuación puedes ver la función redimensionar_jpeg() y su aplicación:
<?php
function redimensionar_jpeg($img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad) {
// crear imagen desde original
$img = ImageCreateFromJPEG($img_original);
// crear imagen nueva
$thumb = ImageCreate($img_nueva_anchura,$img_nueva_altura);
// redimensionar imagen original copiandola en la imagen
ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura, $img_nueva_altura,ImageSX($img),ImageSY($img));
// guardar la imagen redimensionada donde indicia $img_nueva
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
}
redimensionar_jpeg('/home/yo/foto.jpg','/home/yo/mini_foto.jpg',100,100,75);
?>
Ahora no tienes más que aplicar la función a cada una de las imágenes que desees redimensionar. También existe la posibilidad de ampliar la funcionalidad del script y hacer que este redimensione todas las imágenes de un directorio concreto. Por ejemplo, ejecutar el siguiente script en un directorio redimensionaría todas las imágenes de tipo JPEG del mismo:
<?php
function redimensionar_jpeg($img_original,$img_nueva,$img_nueva_anchura, $img_nueva_altura,$img_nueva_calidad) {
// crear imagen desde original
$img = ImageCreateFromJPEG($img_original);
// crear imagen nueva
$thumb = ImageCreate($img_nueva_anchura,$img_nueva_altura);
// redimensionar imagen original copiandola en la imagen
ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura, ImageSX($img),ImageSY($img));
// guardar la imagen redimensionada donde indicia $img_nueva
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
}
$dir = opendir('.');
while(false !== ($file = readdir($dir))) {
if (!is_dir($file) && $file != '.' && $file != '..' && exif_imagetype($file)==2) {
// aplicar funcion
redimensionar_jpeg($file,'mini_'.$file,100,100,75).'<br>';
}
}
closedir($dir);
?>
El trozo de código añadido al script simplemente recorre todos los archivos del directorio en busca de imágenes de tipo JPEG y cada vez que encuentra uno, le aplica la función redimensionar_jpeg().
Usuarios que han visto este tema también han visto...
- Comillas magicas en PHP
- Imagen de validación de formularios con PHP
- rawurlencode y rawurldecode en PHP
- Solucionar errores con MySQL
- Manejo de XForms con PHP
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.