Como generar marcas de agua transparentes en imágenes con PHP

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.

Puedes hacer para continuar leyendo o ¡Puedes dejar un comentario en respuesta al artículo aquí!


[Humor] Si las marcas se escribieran en español
[Humor] Si las marcas se escribieran en español
¿Generar un archivo corrupto de Office?
¿Generar un archivo corrupto de Office?
Generar favicon online
Generar favicon online


Artículos relacionados

Obtener agua de los árboles, Savior Bud
Obtener agua de los árboles, Savior Bud
JpGraph – Generar gráficos con PHP
JpGraph – Generar gráficos con PHP
Generar código QR con The QR Code Generator
Generar código QR con The QR Code Generator
Generar CSS automáticamente con tan solo subir una estructura HTML
Generar CSS automáticamente con tan solo subir una estructu...