«

»

Insertar marca de agua con Php (3) Marcar todas las imágenes de un directorio

En este tutorial estudiaremos cómo insertar una marca de agua en todas las imágenes de un directorio.

Al igual que en el tutorial anterior sobre cómo marcar las imágenes enviadas desde un formulario html, en este también haremos uso de los principio aplicados en el primer tutorial de la serie, donde se aprenden los principios básicos para insertar marcas de agua.

En esta ocasión el proceso de marcado de la imagen lo insertaremos en una función, que se llamara cada vez que se procese uno de los archivos existente en el directorio.

<php
function marcar($imagen,$marca,$nombre){
$margen = 10;
$opacidad = 80;
$marca_x=imagesx($marca);
$marca_y=imagesy($marca);
$imagen_x=imagesx($imagen);
$imagen_y=imagesy($imagen);
$pos_x = $imagen_x - $marca_x - $margen;
$pos_y = $imagen_y - $marca_y - $margen;
imagecopymerge($imagen, $marca, $pos_x, $pos_y, 0, 0, $marca_x, $marca_y, $opacidad);
imagejpeg($imagen,$nombre);
imagedestroy($imagen);
imagedestroy($marca);
chmod($nombre, 0666);
}
?>

En la función marcar se realiza el proceso de estampar la marca de agua en la imagen. En código es el mismo que en el tutorial anterior con la única salvedad de que la imagen final se guarda en el mismo archivo de donde se ha leído, establecido en la variable $nombre.

DEFINE('RUTA',$_SERVER['DOCUMENT_ROOT'].'/fotos/');
$marca_img=$_SERVER['DOCUMENT_ROOT']."/img/marca.jpg";
$marca = imagecreatefromjpeg($marca_img);
if ($dir = opendir(RUTA)) {
 echo "Directorio cargado: $dir\n<br>";
 while (false !== ($archivo = readdir($dir))) {
 echo RUTA."$archivo\n<br>";
 $foto=imagecreatefromjpeg(RUTA.$archivo);
 marcar($foto,$marca,RUTA.$archivo);
 imagedestroy($foto);
 }
 }
 imagedestroy($marca);
 closedir($dir);
}
?>

En este código, primeramente establecemos la ruta con el directorio que queremos marcar, y a continuación cargamos la imagen que hace de marca de agua.

Echo esto se abrimos el directorio, y con un while vamos pasando por todos los archivos que contiene, haciendo una llamada a la función marcar() por cada uno para que se realice el proceso de marcado.

Tras esto se borran las imágenes de la memoria y para terminar se cierra el directorio.

 

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>