crear marcas de agua con php

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:
zip
Descargar watermark.zip - Descargado 542 veces

Tags de búsquedas:

marca de agua php, marca de agua en php, marca de agua con php, php marca de agua, marca de agua con css, jquery marca agua fondo, insertar sello en pdf con php, marca de agua en html, insertar marca de agua con php php, como colocar una imagen en marca de agua en html

Posts Relacionados:


Te ha ayudado el artículo? Colabora!

9 comentario/s

Comentar

  1. mafuclero dice:

    q monse tu post tanto codigo para nah solo veo q haz puesto una imagen sin fonde y aplicar stylo nah + se necesitaba

    • Pedro Ventura dice:

      no tienes culpa de ser ignorante y un paquete…
      pero como dice el post esto es una marca de agua, algo que no se puede quitar, que no es un background ni nada por css que se pueda hackear y quitar la marca de agua en un momento. Por esto este script genera una nueva imagen con ambas superpuestas. Que si alguien quiere quitar la marca de agua ya tiene que tocar photoshop y la imagen original no quedará igual.

  2. Xtreme DigitAll dice:

    Excelente, muy fácil y útil. Gracias

  3. ¡Muchas gracias! Me ha sido útil tu explicación.

  4. dusst dice:

    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?

  5. giovanni g dice:

    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

  6. Ivan dice:

    monto el ejemplo en mi hosting y no me sale la la imagen con l maraca de agua

    http://yoamoacartagena.webcindario.com/

    • Pedro Ventura dice:

      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!!

Deja tu comentario

Nombre:

Email (no será publicado)

Website

Comentario

Colabora, añade +1 a mi blog!!