Redimensionar imagen y mostrarla en el navegador en PHP

Se necesitaban sacar imágenes de cualquier fuente, que se pasaría por parámetro, y que en caso de que fuese mayor de ciertas dimensiones se redimensionase a otras. Para ello se necesita un nuevo script, por ejemplo redimensionaimagen.php y usar lo siguiente.

<?

//Trata el archivo que se pase por GET en el parámetro imagen

$imagen = trim($_GET[‘imagen’]);

if ($imagen != “”){

//Sólo se tratará la imagen en caso de que haya enviado el parámetro.

//Requiere la ruta relativa a la imagen.

$tam=getimagesize($imagen);

// Se comprueba, en este caso, si la anchura o la altura son mayores que 500, caso en el que se resamplearía.

if($tam[0] > 500 OR $tam[1] > 500)
{

//Resampleo la imagen a 93×85 llamando a la función “cambiartam”
cambiartam($imagen, $imagen, 93, 85);
}

}

function cambiartam($nombre,$archivo,$ancho,$alto)
{

$tmp=explode(“.”,$nombre);
$tmp=$tmp[1];

if (is_file($nombre)){

try {

if (preg_match(‘/jpg|jpeg|JPG/’,$tmp))
{
$imagen=imagecreatefromjpeg($nombre);
}
if (preg_match(‘/png|PNG/’,$tmp))
{
$imagen=imagecreatefrompng($nombre);
}
if (preg_match(‘/gif|GIF/’,$tmp))
{
$imagen=imagecreatefromgif($nombre);
}

$x=imageSX($imagen);
$y=imageSY($imagen);

if ($x > $y)
{
$w=$ancho;
$h=$y*($alto/$x);
}

if ($x < $y)
{
$w=$x*($ancho/$y);
$h=$alto;
}

if ($x == $y)
{
$w=$ancho;
$h=$alto;
}

$destino=ImageCreateTrueColor($w,$h);

imagecopyresampled($destino,$imagen,0,0,0,0,$w,$h,$x,$y);

if (preg_match(“/png/”,$tmp))
{
header(“Content-type: image/png”);
imagepng($destino);
}
if (preg_match(“/gif/”,$tmp))
{
header(“Content-type: image/gif”);
imagegif($destino);
}
else
{
header(“Content-type: image/jpeg”);
imagejpeg($destino);
}

imagedestroy($destino);
imagedestroy($imagen);

} catch (Exception $e) {

print_r(“Error: ” .  $e->getMessage() . “<br />”);

}

}else{

//Lo que ha enviado no es un fichero.

print_r(“Error: el fichero enviado no existe.”);

}

}

?>

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: