crear marcas de agua con php
- agosto 3, 2010
- 6 comentarios
- PHP Tags: librerias y funciones
Pues hace tiempo que implementé este script para crear marcas de agua en una tienda online para marcar productos como agotados y no me acordaba que lo tenía.
Es un script muy sencillo que usa las librerías GD para manipular las imágenes y superponer una sobre la otra.
Primero es necesario crear una marca de agua en formato PNG. La ventaja principal de éste formato (indispensable en este caso) es que permite 255 niveles de transparencias, por lo que se puede lograr una imagen translúcida. Yo he creado una con la palabra agotado, pero he decir que no es lo mejor que se puede esperar, no soy diseñador y no me gusta estar tocando Photoshop. jejeje bueno es esta la imagen que he usado como marca de agua, obviamente es un ejemplo y se puede usar otra mejor o con otro texto,más grande, etc..

Basta con pasarle el nombre de la imagen a la cual se le desea aplicar la marca de agua a través de la URL…
watermark.php?i=rockers_coffee_pink.jpg
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Implementacion de imagen con marca de agua</title> </head> <body> <h1>Implementacion de imagen con marca de agua</h1> <p>Imagen sin marca de agua.</p> <img src="rockers_coffee_pink.jpg" /> <p>Imagen con marca de agua</p> <img src="watermark.php?i=rockers_coffee_pink.jpg" /> </body> </html>
Script php que genera la marca de agua
<?php
# root del los archivos
$basedir="/path_completo/a/desarrollo_watermark";
#imagen que hace de watermark, esta imagen es la que he indicado antes.
$watermarkimage="agotado_trans.png";
//print_r($_GET);
$file=basename($_GET['i']);
$path=($_GET['p']);
$image = $basedir."/".$path."/".$file;
$watermark = $basedir."/".$watermarkimage;
$im = imagecreatefrompng($watermark);
$ext = substr($image, -3);
if (strtolower($ext) == "gif") {
if (!$im2 = imagecreatefromgif($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "jpg") {
if (!$im2 = imagecreatefromjpeg($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "png") {
if (!$im2 = imagecreatefrompng($image)) {
echo "Error opening $image!"; exit;
}
} else {
die;
}
imagecopy($im2, $im, (imagesx($im2)/2)-(imagesx($im)/2), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
if($_GET[repeat]) {
$waterless = imagesx($im2) - imagesx($im);
$rest = ceil($waterless/imagesx($im)/2);
for($n=1; $n<=$rest; $n++) {
imagecopy($im2, $im, ((imagesx($im2)/2)-(imagesx($im)/2))-(imagesx($im)*$n), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
imagecopy($im2, $im, ((imagesx($im2)/2)-(imagesx($im)/2))+(imagesx($im)*$n), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
}
}
$last_modified = gmdate('D, d M Y H:i:s T', filemtime ($image));
header("Last-Modified: $last_modified");
header("Content-Type: image/jpeg");
imagejpeg($im2,NULL,95);
imagedestroy($im);
imagedestroy($im2);
?>
Resultado de integrar la marca de agua en php en una imagen:

Indicar que este proceso para implementar marcas de agua sobre una imagen no es permanente e irreversible, y alguien que entienda un poco puede sacar la imagen original sin problema, pero este proceso para incluir marcas de agua no está hecho para sellar imágenes originales con marcas de agua duraderas o difíciles de eliminar.
Ver ejemplo: http://www.pedroventura.com/demos/watermark/
Descargar el código, y las imágenes:
![]()
Descargar watermark.zip - Descargado 433 veces
Tags de búsquedas:
marca de agua php, marca de agua en php, marca de agua con php, php marca de agua, php crear marca de agua, marca de agua sobre elemento html, marca de agua php codigo, agregar marca de agua con php, javascript para marca de agua, imprimir marca de agua php
Posts Relacionados:
- Obtener la extension de un archivo subido con php En este post voy a explicar como comprobar las extensiones de una imagen con una simple función en php podremos sacar la extensión de un archivo, ya sea una imagen...
- Parseando XML con PHP. Lo más fácil y simple Una de las maneras más simples de parsear los datos de un xml es usar la función de php simpleXML que viene integrada con el apache, por lo que su...
- mostrar los mensajes de error del php por pantalla con error_reporting Establece el nivel de notificación de errores. El parámetro es un valor de tipo integer que representa un campo de bits, o constantes nominadas. Los niveles de error_reporting y constantes...
- Detectar iPad con PHP o Javascript Si hace unos días escribía un artículo sobre como redireccionar una web en función del dispositivo móvil, ya sea iPad, iPhone o cualquier otro smartphone, hoy explicaré más en concreto...
- Crear archivos PDF con CakePHP En este post voy a comentar lo que he hecho para crear archivos PDF con CakePHP. Los ingredientes para esta “receta” son: 1.- La librería TCPDF que se encarga de...

RSS Feed
¡Muchas gracias! Me ha sido útil tu explicación.
y que se agrega para que se crée la imagen ya modificada con la marca de agua, para que reemplaze a la imagen original?
No se agrega nada, lo que se hace es crear una imagen nueva desde 0 partiendo de ambas imágenes.
hola..veo que sabes bastante del tema…por eso te hago una pregunta..sabes como colocar una marca de agua a un stream? puede ser un embed de justin, tvope,ustream etc…sabes como hacerlo? …te agradezco tu colaboracion
monto el ejemplo en mi hosting y no me sale la la imagen con l maraca de agua
http://yoamoacartagena.webcindario.com/
Bueno amigo, si no has modificado ni una linea de código, pues normal!!! Esto no es un “plug and play” un usb que pinchas y listo!
Hay algunas cosillas que tocar!
Por ejemplo si voy a tu ejemplo donde lo has implementado y voy a la url que hace la carga de la marca de agua: http://yoamoacartagena.webcindario.com/watermark.php?i=starcraft-2-wings-of-liberty-pc.png
Veo que te esta fallando todo esto:
Warning: imagecreatefrompng() [function.imagecreatefrompng]: Unable to access /path_completo/a/desarrollo_watermark/agotado_trans.png in /home/webcindario/y/o/yoamoacartagena/watermark.php on line 14
Warning: imagecreatefrompng(/path_completo/a/desarrollo_watermark/agotado_trans.png) [function.imagecreatefrompng]: failed to open stream: No such file or directory in /home/webcindario/y/o/yoamoacartagena/watermark.php on line 14
Warning: imagecreatefrompng() [function.imagecreatefrompng]: Unable to access /path_completo/a/desarrollo_watermark//starcraft-2-wings-of-liberty-pc.png in /home/webcindario/y/o/yoamoacartagena/watermark.php on line 27
Warning: imagecreatefrompng(/path_completo/a/desarrollo_watermark//starcraft-2-wings-of-liberty-pc.png) [function.imagecreatefrompng]: failed to open stream: No such file or directory in /home/webcindario/y/o/yoamoacartagena/watermark.php on line 27
Error opening /path_completo/a/desarrollo_watermark//starcraft-2-wings-of-liberty-pc.png!
Tienes que revisar el código antes, cambia : /path_completo/a/desarrollo_watermark/ por tu path!!