Laboratorio: añadir título a la cabecera usando PHP y filtros

El otro día nos preguntaban que funcionalidades se le podía añadir a la entrada Laboratorio: Recorta imágenes dinámicamente con PHP y HTML. Y aunque son muchas, depende de la imaginación que tengamos, a mí se me ha ocurrido escribir el título del blog en la cabecera usando un filtro blur para resaltar el texto, algo que he visto en varios lugares. filtro.png

El proceso es igual que en la entrada anterior, salvo que en vez de devolver una imagen nueva que es un trozo de la original, lo que vamos a coger es ese trozo, aplicarle el filtro blur varias veces para que quede muy difuminado, escribirle el título y devolver la imagen original con el trozo modificado copiado en el mismo sitio de donde se cogió.

<?php
// Abre la imagen
$fichero = getcwd()."/".$_GET["img"];
$texto = $_GET["texto"];
if (preg_match('/.png$/', $fichero)) {
$img = imagecreatefrompng($fichero);
} else if (preg_match('/.gif$/', $fichero)) {
$img = imagecreatefromgif($fichero);
} else if (preg_match('/.jpg$/', $fichero)) {
$img = imagecreatefromjpeg($fichero);
}
$xini = $_GET["xini"];
$yini = $_GET["yini"];
$xfin = $_GET["xfin"];
$yfin = $_GET["yfin"];
$res = imagecreatetruecolor ($xfin-$xini, $yfin-$yini);
imagecopy($res, $img, 0, 0, $xini, $yini, $xfin-$xini, $yfin-$yini);
// Aplicamos filtro blur
for ($i=0; $i<40; $i++) {
imagefilter($res, IMG_FILTER_GAUSSIAN_BLUR);
}
// Escribimos texto
// Calculamos el tamaño de letra
$letra = 81;
$tam = null;
do {
$tam = imagettfbbox ( $letra--, 0, "arial.ttf", $texto );
} while (abs($tam[6]-$tam[4]) > abs($xfin-$xini) || abs($tam[3]-$tam[5]) > abs($yfin-$yini));
$negro = imagecolorallocatealpha($res, 0, 0, 0, 80);
imagettftext ( $res, $letra, 0, 0, abs($tam[3]-$tam[5])+(abs($yfin-$yini)-abs($tam[3]-$tam[5]))/2, $negro, "Arial", $texto);
imagecopy($img, $res, $xini, $yini, 0, 0, $xfin-$xini, $yfin-$yini);
header("Content-type: image/png");
imagepng($img);
?>

Código fuente aquí

Share Button