«

»

Insertar marca de agua con Php (1)

Una práctica habitual para evitar que nos roben las imágenes de una página web para utilizarlas sin permiso en otras es el marcar las imágenes con el logotipo de la página original.

Este proceso se puede realizar manualmente desde programas de retoque fotográfico, como Photoshop o Gimp, pero sin duda, la forma más rápida de hacerlo es programando un script que realice la tarea automáticamente.

En este tutorial vamos a estudiar la forma de realizar dos tipos de scripts en php, uno para marcar las imágenes que enviamos a través de un formulario y otro para insertar la marca de agua en todas las imágenes existentes en un directorio.

Lo primero que vamos a necesitar es crear la imagen con el nombre o el logotipo con el que queremos marcar la imagen. Para esto hay que tener en cuenta el tamaño de las imágenes que se van a marcar para que ni se ocupe demasiado espacio ni sea tan pequeña la marca que recortando una pequeña porción se pueda eliminar fácilmente.

En este tutorial se explica como crear una sencilla marca de agua con Gimp.

Lo primero que necesitamos es la ruta donde se encuentra la imagen con la marca de agua, para poder cargar la imagen en php.

$marca_ruta=$_SERVER['DOCUMENT_ROOT']."/img/marca.png";
$marca = imagecreatefrompng($marca_ruta);

En la primera línea, con $_SERVER[‘DOCUMENT_ROOT’] obtenemos la ruta al directorio raíz donde se sitúan los archivos en el servidor web. “/img/marca.png” es la ruta donde hemos colocado la imagen con la marca de agua.

Con la segunda línea cargamos la imagen desde la ruta generada en la línea anterior, mediante la función imagecreatefrompng. En caso de que la imagen que tengamos como marca de agua este en formato gif, en lugar de esta función imagecreatefromgif.

$margen = 10;
$opacidad = 80;

En estas líneas especificamos la distancia en píxels que se dejara de margen respecto al borde de la imagen, y el porcentaje de opacidad con que se imprimirán las margas de agua sobre las imágenes originales.

$marca_x=imagesx($marca);
$marca_y=imagesy($marca);

Aquí obtenemos las dimensiones de la imagen que hace de marca de agua para posteriormente calcular en que posición se posiciona respecto a la imagen sobre la que se imprimirá.

$imagen_ruta=$_SERVER['DOCUMENT_ROOT']."/img/imagen.jpg";
$imagen=imagecreatefromjpeg($imagen_ruta);
$imagen_x=imagesx($imagen);
$imagen_y=imagesy($imagen);

En estas líneas hacemos con la imagen que queremos marcar lo mismo que hemos hecho con la que sirve de marca de agua. Establecemos la ruta, cargamos la imagen (en este caso una jpg) y obtenemos sus dimensiones en píxels.

$pos_x = $imagen_x - $marca_x - $margen;
$pos_y = $imagen_y - $marca_y - $margen;

Aquí calculamos la posición en la que se imprimirá la marca de agua. Esta será el ancho y alto de la imagen, restándole el ancho y alto de de la imagen que hace de marca de agua y el margen que establecimos previamente que separara a la marca de agua del borde de la imagen.

imagecopymerge($imagen, $marca, $pos_x, $pos_y, 0, 0, $marca_x, $marca_y, $opacidad);
imagejpeg($imagen,$imagen_ruta);

En la primera línea se inserta la marca de agua en la imagen, según los parámetros que hemos establecido previamente de posición y opacidad.

En la segunda se guardan los cambios realizados en la imagen en la ruta original de la que se leyó el fichero de la imagen.

En próximas tutoriales se estudiaran casos prácticos en los que aplicar estas funciones. El siguiente tutorial está dedicado a aplicar marcas de agua a ficheros enviados mediante un formulario html.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes utilizar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>