Seguro que han visto en muchos lugares imágenes que tenían una pequeña referencia hacia la página web, ya puede ser un logo o un mensaje que le interese poner al autor, para los que no lo sepan esto se puede realizar de forma automática con PHP gracias a la librería GD y ala función imagecopymerge().
No penséis que es muy complicado porque la verdad es que se consigue en unos pocos pasos donde lo que tratamos de realizar es copiar una imagen encima de la otra, en este caso vamos a coger dos parametros que le pasamos por la URL marcadeagua y original que serán las dos imágenes con las que trabajaremos, también aplicaremos una opacidad del 50%:
$imagenmarcadeagua = $_GET['marcadeagua']; $imagenmarcadeagua = imagecreatefrompng($imagenmarcadeagua); //la marca de agua debe ser un PNG con transparencia para que no salga un pegote encima de la otra imagen $imagenoriginal = $_GET['original']; $imagenoriginal = imagecreatefromjpeg($imagenoriginal); // Hay que tener en cuenta el formato de la imagen original, en este caso está realizado para jpg $margenderecho = 10; $margeninferior = 10; $tamanox = imagesx($imagenmarcadeagua); $tamanoy = imagesy($imagenmarcadeagua); // Indicamos los margenes de la marca de agua y obtenemos el alto y ancho de la marca de agual para calcular la posición imagecopy($imagenoriginal, $imagenmarcadeagua, imagesx($imagenoriginal) - $tamanox - $margenderecho, imagesy($imagenoriginal) - $tamanoy - $margeninferior, 0, 0, imagesx($imagenmarcadeagua), imagesy($imagenmarcadeagua),50); // Copiamos la marca de agua sobre la nuestra en la posición marcada gracias al margen derecho y el inferior y además indicamos la opacidad de la imagen al final de todo con el valor 50 lo que indica un 50% header('Content-type: image/png'); imagepng($im); imagedestroy($im); // Indicamos el formato de salida, imprimimos el contenido que nos devuelve y liberamos la memoria. |
$imagenoriginal = $_GET[‘original’];
$imagenoriginal = imagecreatefromjpeg($imagenoriginal);
// Hay que tener en cuenta el formato de la imagen original, en este caso está realizado para jpg
$margenderecho = 10;
$margeninferior = 10;
$tamanox = imagesx($imagenmarcadeagua);
$tamanoy = imagesy($imagenmarcadeagua);
// Indicamos los margenes de la marca de agua y obtenemos el alto y ancho de la marca de agual para calcular la posición
imagecopy($imagenoriginal, $imagenmarcadeagua, imagesx($imagenoriginal) – $tamanox – $margenderecho, imagesy($imagenoriginal) – $tamanoy – $margeninferior, 0, 0, imagesx($imagenmarcadeagua), imagesy($imagenmarcadeagua),50);
// Copiamos la marca de agua sobre la nuestra en la posición marcada gracias al margen derecho y el inferior y además indicamos la opacidad de la imagen al final de todo con el valor 50 lo que indica un 50%
header(‘Content-type: image/png’);
imagepng($im);
imagedestroy($im);
// Indicamos el formato de salida, imprimimos el contenido que nos devuelve y liberamos la memoria.
Una vez que tenemos generada la imagen con la marca de agua podemos realizar dos cosa, una es mostrarla directamente poniendo la URL pero la mejor opción sería reemplazar la imagen actual simplemente indicando la ruta con el comando copy().
Es mejor usar marcas de aguas con cierta opacidad ya que dificultan su eliminación por parte de los editores por lo que conseguirás proteger mejor el contenido.