Como hacer “thumbnails” de tus fotografias

Seroquel Without Prescription Prednisone No Prescription VPXL For Sale Stromectol Generic Buy Hoodia Online Elavil Without Prescription Synthroid No Prescription Prozac For Sale Toprol XL Generic Buy Cialis Soft Tabs Online

PHP, junto con la librería GD, permiten la creación y manipulación de exness 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.&lt;br&gt;';
if (imagetypes() & IMG_JPG) echo 'Formato JPG soportado.&lt;br&gt;';
if (imagetypes() & IMG_GIF) echo 'Formato GIF soportado.&lt;br&gt;';
if (imagetypes() & IMG_WBMP) echo 'Formato WBMP soportado.&lt;br&gt;';
?>

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:

  • Localización completa de la imagen original.
  • ocalización completa de la nueva imagen, es decir, el "thumbnail" que vamos a crear.
  • Calidad o compresión de la exness brokers nueva imagen. Los valores posibles van de 0 (peor calidad, mayor compresión) a 95 (mejor calidad, menor compresión).
  • Anchura de la nueva imagen en pixels.
  • Altura de la nueva imagen en pixels.

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:

&lt;?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);
?&gt;

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:

&lt;?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).'&lt;br&gt;';
}
}
closedir($dir);
?&gt;

El trozo de código añadido al script exness españa 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().

4 Responses to “Como hacer “thumbnails” de tus fotografias”

  1. Luis Says:

    MMM tengo un problema con la funcion… al aplicarla a una imagen en color la obscurece
    excite algun paramtro para evitar esto ???

  2. miguel balboa Says:

    gracias. fue de mucha ayuda esta funcion..
    la modifique, de tal forma que no afecte las proporciones de la imagen.. aaa ..y tengo el mismo problema.. se oscurecen:

  3. ricardo Says:

    Ya se cual es el error de porque oscurecen las imagenes… es simple..

    Yo cambie 2 cosas…

    En vez de poner:
    // crear imagen nueva
    $thumb = ImageCreate($img_nueva_anchura,$img_nueva_altura);

    Yo puse:
    // crear imagen nueva
    $thumb = imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura);

    En vez de:
    // redimensionar imagen original copiandola en la imagen
    ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img));

    Puse:
    // redimensionar imagen original copiandola en la imagen
    imagecopyresampled ($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,imagesx($img),imagesy($img));

    Es todo Saludos!!

  4. liliana Says:

    hola esta funcion es muy buena y util gracias!!

    Solo que yo ocupo aparte hacer otra cosa para modificar el tamaño de la imagen y no se si puedan ayudarme, lo que pasa que las imagenes las pongo en un espacio que tiene la dimension 171×175. y pues las imagenes que tengo que son de diferente tamaño las voy a colocar, y pues yo ocupo redimensionar la imagen pero solo si tomando en cuenta el ancho, lo alto o ambas cosas que acepte cualquiera de esos tres rangos, me podrian decir si es posible hacer eso please

Leave a Reply