ElTicus.com

Programación, lenguajes y recursos para programadores

Código fuente
Como cambiar el tamaño de una imagen JPG sin que esta se deforme.
En PHP con la librería GD o GD2
Publicado por JL Fecha: 2007-07-25 19:02:22 Idioma: Español Tipo de documento: Código fuente

Como cambiar el tamaño de una imagen JPG sin que esta se deforme.

En ocasiones, necesitamos mostrar una serie de imagenes en un espacio previamente definido, pero que pasa si las imagenes tienen diferentes medidas? Podría ser que tengamos imágenes panorámicas o alargadas y al redimensionarlas a un area cuadrada por ejemplo, se verán deformes.

La idea de este código es poder escalar una imagen y si esta es muy alargada, deberá aprecer con dos franjas a los lados de manera que "Cuadre" perfectamente en el espacio asignado, si por el contrario, la imagen es ancha deberán aparecer franjas arriba y abajo.

Por ejemplo:




Imágenes escaladas sobre un fondo azul

El código es el siguiente:

// Función para cambiar el tamaño de una imágen JPG 
//   (imagen1) y genera una nueva (imagen2)
function thumbjpegXY($imagen1,$anchura, $altura, $imagen2)
{
 //echo $camino.$dir_thumb.$prefijo_thumb.$nombre." NO existía<br>\n";
 $img = imagecreatefromjpeg($imagen1) 
          or die("No se encuentra la imagen $camino$nombre<br>\n");

 // miramos el tamaño de la imagen original...
 $datos = getimagesize($imagen1) or die("Problemas al leer $imagen1<br>\n");

 // intentamos escalar la imagen original utilizando la ALTURA como base
 $ratio = ($datos[1] / $altura);
 $anchuraX = round($datos[0] / $ratio);
 $alturaX=$altura;
 $xpos=($anchura-$anchuraX)/2;
 $ypos=0;

 // Si quedó muy ancha entonces calculamos con el ANCHO
 if($anchuraX >$anchura)
 {
  $ratio = ($datos[0] / $anchura);
  $alturaX = round($datos[1] / $ratio);
  $anchuraX=$anchura;
  $xpos=0;
  $ypos=($altura-$alturaX)/2;
 }

 // esta será la nueva imagen reescalada
 $thumb = imagecreatetruecolor($anchura,$altura);

 //Color de relleno
 $rellenoclr = imagecolorallocate($thumb, 0, 0, 0); //<-- rgb:0,0,0 = negro 
 imagefill($thumb, 0, 0, $rellenoclr);

 // con esta función la reescalamos
 imagecopyresized($thumb, $img, $xpos, $ypos, 0, 0, 
                                $anchuraX, $alturaX, $datos[0], $datos[1]);

 // La salvamos con el nombre y en el lugar que nos interesa.
 imagejpeg($thumb,$imagen2);
}


y para utilizar la funcion simplemente utilizamos el siguiente código:


<?
 // escalamos la imagen para que mida 100 por 200 pixeles
 thumbjpegXY("imgs/Foto1.jpg",100, 120, "imgs/Foto1_ajustada.jpg");
 
 // mostramos la foto
 echo "<img src='imgs/Foto1_ajustada.jpg'>";
?>




Nadie ha puesto ningún comentario todavía


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =




No hay comentarios

Artículos relacionados:
Recurso no clasificado Check de diseño código fuente Como ponerle un contador de visitas a tu sitio en menos de 5 minutos. Código fuente Como colocar un relojito en una página WEb y que se esté refrescando cada segundo. Recurso no clasificado Como imprimir la fecha en español utilizando PHP aunque el idioma del servidor sea el inglés. Código fuente Como construir una gráfica de barras con CSS y PHP
Tip Como mandar parámetros a una aplicación de Flash en Internet Explorer y Mozilla Código fuente Como dibujar un calendario en una página Web Truco Como generar un archivo XLS desde PHP Tip Como escalar una imagen utilizando PHP y las funciones de la librería GD Tip Como corregir la fecha de mi servidor si éste se encuentra en un uso horario diferente al mio
Recurso no clasificado Huevos de Pascua (Easter Egg) Código fuente Para imprimir la fecha en español utilizando PHP independientemente del lenguaje del servidor (Utilizando ARRAYS) Truco Como generar un archivo .DOC de WORD desde PHP Truco Como generar un archivo .DOC/.RTF de WORD desde PHP (Incluyendo tablas) Truco Ejemplo práctico de las funciones de expresiones regulares: Como identificar una dirección email dentro de un archivo de texto
Código fuente Programa en PHP que convierte una cantidad dada como un número a su equivalente en letra Código fuente Como convertir una fecha de Lenguaje Natural a tipo DATE código fuente Las tablas de multiplicar en PHP Truco Como alternar colores en una tabla fácilmente código fuente Generar una tabla HTML desde una Base de Datos MYSQL
Recurso no clasificado Aprendiendo MySQL con PHP