Solingest

Redimensionar e incrustar imagen al vuelo en PHP

 

Bien, este código salió de la necesidad, pues teníamos la urgencia de incrustar una marca de agua en imágenes al vuelo, y además redimensionarlas a un tamaño deseado.

El código es muy simple pero la verdad es que funciona a la perfección. Lo único que necesita es una máquina medianamente potente para procesar las imágenes con agilidad.


// Ruta de la imagen original
$path = 'carpeta_imagenes/'.$_GET["img"];

// Cargamos la imagen seleccionada
$image = imagecreatefromstring(file_get_contents($path));

$w = imagesx($image) +5;
$h = imagesy($image) +5;

// Cargamos la imagen de marca de agua, recomendable formato PNG
$watermark = imagecreatefrompng('carpeta_imagen_marca_de_agua/logo.png');
$ww = imagesx($watermark) +5;
$wh = imagesy($watermark) +5;

// Mezclamos la imagen original y la marca de agua

imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);

// Volvemos a procesar la imagen para redimensionarla
list($width,$height)=getimagesize($path);
$newwidth=$_GET["w"]; // Recibimos el parámetro del ancho deseado

// Calculamos el alto y ancho deseado
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$image,0,0,0,0,$newwidth+4,$newheight+4,$w,$h);

// Enviamos la imagen
header('Content-type: image/jpeg');
imagejpeg($tmp);
exit();
?>

Para hacer la llamada al procedimiento, debemos insertar el código de esta manera: