miércoles, 6 de julio de 2011

Re-dimensionar imagen con PHP

En este script veremos como re dimensionar el tamaño de una imagen guardando temporalmente la imagen con el nuevo tamaño e imprimiendo la imagen en el navegador del usuario.

Para usar el script necesitas la extencion GD de php, versión de php 5.3.x (probado).
[php]
/*
Funcion: Mostrar imagen escalado con php
@uthor: Robert Galeano Fernandez - rgfpy - www.sourcepy.com
Parametros IN:
.url = codificar el path de la imagen con base64_encode ejemplo base64_encode('imagenes/logo.jpg');
en este caso retrocedo un dir atras par buscar la imagen "../" por q mi script esta en dir adelante del dir dond se encuenta la imagen
mi archivo redimensionar_imagen.php (public_html/funciones/redimensionar_imagen.php)
mi imagen (public_html/imagenes/logo.jpg)
desde donde llamo a redimensionar (public_html/mostrar_img.php)
.x = tamaño max horizontal q pued tener la imagen
.y = tamaño max vertical q pued tener la imagen
*/

ob_start();

#variables
isset($_GET['x']) ? $anchura = (int)$_GET['x'] : $anchura = 1;
isset($_GET['y']) ? $hmax = (int)$_GET['y'] : $hmax = 1;
$url = "../" . base64_decode($_GET['url']);

isset($_SERVER['HTTP_REFERER']) ? $ref = $_SERVER['HTTP_REFERER'] : $ref = '';
$dominio = $_SERVER['SERVER_NAME'];


#Comprobamos si existe el archivo y si se esta llamando desde nuestro dominio
if(file_exists($url) == true && $ref && strstr($ref, $dominio)){
list($img_w, $img_h, $img_tipo, $atributo) = @getimagesize($url);

if($img_tipo == 1){ $img = @imagecreatefromgif($url); }
elseif($img_tipo == 2){ $img = @imagecreatefromjpeg($url); }
elseif($img_tipo == 3){ $img = @imagecreatefrompng($url); }

$ratio = ($img_w / $anchura);
$altura = ($img_h / $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, $img_w, $img_h);

if($img_tipo == 1){ header("Content-type: image/gif"); @imagegif($thumb); }
elseif($img_tipo == 2){ header("Content-type: image/jpeg"); @imagejpeg($thumb); }
elseif($img_tipo == 3){ header("Content-type: image/png"); @imagepng($thumb); }

@imagedestroy($thumb);

} else {
$url = "../logo/nodisponible.jpg"; // en caso que no encuentre la url de la imagen buscara esta
$altura = $hmax;

list($img_w, $img_h) = @getimagesize($url);
$img = @imagecreatefromjpeg($url);
$thumb = @imagecreatetruecolor($anchura,$altura);
@imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $img_w, $img_h);
header("Content-type: image/jpeg");
@imagejpeg($thumb);
@imagedestroy($thumb);
}

ob_end_flush();

/*
#Ejemplo de uso
// suponiendo que guardaste el script con el nombre de redimensionar_imagen.php

$url_img_encode = base64_encode('home/rgfpy/public_html/imagenes/prueba.jpg');
echo ""; // donde x=anchura, y=altura
*/
?>
[/php]

Cualquier duda de como usar el script estaré a las ordenes de poder ayudarte.

No hay comentarios.:

Publicar un comentario