14

Calcular las dimensiones de una imagen en PHP

May 14, 2012

Publicidad / Advertisement

 

La mayoría de las veces que usamos distintas imágenes que no se adaptan al ancho y alto de lo que queremos, nos encontramos con problemas de visualización, imágenes estiradas horizontal o verticalmenteen el mejor de los casos, y descuadres de diseño en la página en otras ocasiones.

Para resolver este problema , hay 3 posibilidades:

 

1.  La más costosa , pero muy efectiva, es escalar manualmente con un programa de edicion de imágenes, para que todas las imágenes tengan mismo alto y ancho. Recomendado sólo si el número de imagenes que vamos a manejar es reducido.

2. Si se puede sacrificar una de las dos dimensiones donde va a ir mostrada la imagen, la solución pasa por definir un valor fijo a una de las dos dimensiones  ( si fijamos el ancho , tendremos escalada la imagen con un alto relativo , y si fijamos el alto , el ancho será el que cambie dependiendo de la imagen) . Esta solución es fácil de implementar y efectiva siempre y cuando la dimensión que queda libre se adapte a nuestro diseño de página.

3. En el caso de que tratemos con un gran número de imágenes de diferentes tamaños o que no tengamos el control sobre las dimensiones ( casos de imágenes subidas desde gestores de contenidos , subidas por usuarios por FTP, etc… ) , necesitamos usar la magia de la programación.  Pues allá vamos…

 

$img_size  = getimagesize($photo_url);
$img_width = null;
$img_height = null;
$img_w  = $img_size[0];
$img_h  = $img_size[1];

//echo “w = “; var_dump($img_w);
//echo “h = “; var_dump($img_h);

// TAMANOS MAXIMOS PERMITIDOS – ESTAS SON LAS DIMENSIONES DEL CANVAS
$max_w = “230”;
$max_h = “250”;

// si el ancho es mayor que el canvas
if ( $img_w > $max_w ) {

   if ( $img_h <= $max_h) $img_width =  $max_w;  $img_height = $img_h;
   if ( $img_h >  $max_h) $img_width =  $max_w;  $img_height = “”;

}


//MOSTRAMOS EL RESULTADO

echo “<img src=”‘.$photo_url.'”  border=”0″ width=”‘.$img_width.'”  height=”‘.$img_height.'”/>”;

 

 

 

Como muestra gráfica, hemos usado unas imágenes del apuesto George Clooney como ejemplo de tratamiento de imágenes con diferentes medidas , en alto y ancho.

 

Ver ejemplo online
 

 

Para mas informacion , Ver documentación sobre la función getimagesize()

Publicidad / Advertisement

 

Topics: Desarrollo web, Internet | No Comments »

Comments