Redimensionar imagenes desde código con php
Más de uno habrá tenido problemas con las imagenes, teniendo que recortarlas, porque no tiene el tamaño deseado, y comprimirlas porque son demasiado pesadas y relentizan la visualización de nuestra página web.
Algunos códigos, lo que hacen es crear una segunda imagen, mas pequeña, lo cual ayuda a mejorar la carga de la web, pero aumenta el espacio que ocupara en el servidor.
Aquí os traigo un código, que nos ayudara a tratar este tema, el cual no crea ninguna segunda copia de nuestra imagen, este código, hace que el servidor redimensione nuestra imagen, creando una nueva en memoria, que sera la que nos muestre en la web, con esto conseguimos una navegación rápida porque nos mostrara la imagen al tamaño que elijamos y el espacio utilizado sera el mismo porque la imagen la creara en la memoria.
Código:
<?php
$anchura=basename($_GET['ancho']);
$hmax=basename($_GET['alto']);
$nombre=basename($_GET['imagen']);
$datos = getimagesize($nombre);
if($datos[2]==1){$img = @imagecreatefromgif($nombre);}
if($datos[2]==2){$img = @imagecreatefromjpeg($nombre);}
if($datos[2]==3){$img = @imagecreatefrompng($nombre);}
$ratio = ($datos[0] / $anchura);
$altura = ($datos[1] / $ratio);
if($altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
$thumb = imagecreatetruecolor($anchura,$altura);
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
if($datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);}
if($datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);}
if($datos[2]==3){header("Content-type: image/png");imagepng($thumb); }
imagedestroy($thumb);
?>
Guardaremos el código en un archivo que llamaremos redimensionar.php y lo pondremos en la carpeta donde vamos a coger las imagenes que queremos redimensionar.
Supongamos que las imagenes se encuentran en una carpeta llamada «img» que esta en el directorio raíz, una vez guardado el archivo redimensionar.php en la carpeta «img» junto a las imagenes, crearemos nuestra pagina php y donde queramos mostar la imagen pondremos lo siguente:
Código:
<?php
$Nombre = "nombre.jpg";
$Ancho = "150";
$Alto = "300";
$Titulo = "Titulo";
echo "<img src='img/" . "redimensionar.php?imagen=". $Nombre ."&ancho=". $Ancho ."&alto=". $Alto '." title='". $Titulo ."' >";
?>
El nombre de la imagen, el ancho y el alto, son los datos que se proporcionan, para redimensionar la imagen, esta la creara proporcionalmente, no creara la imagen con las medidas de altura y anchura indicadas, sino que introducirá la foto de forma que nunca salga de esas medidas, por ejemplo:
Una foto de 800×600 le indicamos que queremos que el alto sea de 600 y el ancho 600, el resultado sera una imagen de 600×450 y si la foto es de 600×800 nos dara una foto de 450×600.
MUCHAS gRACIAS