martes, 12 de julio de 2011

Dimencionar una imagen en PHP


Voy a tratar de escribir pequeños ejemplos de cómo resolver problemas que a veces se nos presentan mientras programamos, lo hará lo más simple posible, pues en mi caso aprendo mejor de simple a complejo.

Supongamos que queremos mostrar N numero de imágenes que se encuentran dentro de un directorio pero dichas imágenes tienen dimensiones diferentes (alto y ancho) pero queremos que al menos coincidan en una de esas dimensiones por ejemplo que todas tengan 80 pixeles de alto no importa el ancho.

Lo que necesitamos hacer es primero crear la ruta de la imagen:
$link_foto="fotos/nombre_del_archivo.jpg";

Luego verificamos que exista dicho archivo con la sentencia file_exists de este modo 
if (file_exists($link_foto)){

Creamos el objeto de la imagen del tipo jpeg
$img = ImageCreateFromJpeg($link_foto);

Obtenemos su dimensión X
$x = ImageSX($img);

Obtenemos su dimensión Y
$y = ImageSY($img);

Definimos por ejemplo el ancho que queremos en todas las imágenes en pixeles, voy a decirle que quiero 60px de ancho
$ancho=60;

Obtenemos el porcentaje que 60 px de ancho representa en $x con una regla de 3 simple si $x es el 100% de la imagen cuanto representa $ancho;
$por_ancho=(60*100)/$x;

Con este porcentaje podemos obtener el alto en relación al ancho
$alto=round($y*($por_ancho/100));
Cerramos el IF
}

El Código quedaría de la siguiente forma

<?php

$link_foto="fotos/nombre_del_archivo.jpg";
               
if (file_exists($link_foto)){
                               $img = ImageCreateFromJpeg($link_foto);
                               $x = ImageSX($img);
                               $y = ImageSY($img);
                               $ancho=60;
                               $por_ancho=(60*100)/$x;
                               $alto=round($y*($por_ancho/100));
}
?>

Y para mostrar la imagen en HTML lo haríamos así

<img src="<?php echo $link_foto; ?>" width="<?php echo $ancho; ?>" height="<?php echo $alto; ?>" />

No hay comentarios:

Publicar un comentario