Posiblemente este no resulte un artículo demasiado práctico para la mayoria gente, pero seguro que les viene muy bien a todos aquellos que quieran crear una galeria para mostrar sus fotografias o cualquier otro tipo de creación gráfica. Posiblemente los dos únicos métodos fiables para evitar el uso comercial de nuestras imágenes por un tercero, sean la inclusión de una "marca de agua" en la misma y el asegurarse que el tamaño y resolución de las imágenes que mostramos sean insuficientes para cualquier tipo de uso comercial. Este artículo muestra una forma sencilla de aplicar una "marca de agua" de forma masiva a tus imágenes. Actualmente, la única forma de evitar que tus imágenes sean robadas en internet, es no ponerlas en internet. No existe ninguna otra forma de evitarlo, pero lo que si que podemos hacer, es poner el mayor número de obstáculos con el fin de disuadir al 99% de los ladrones. Una "marca de agua" no es más que una imagen que incrustamos en nuestra imagen, por lo tanto, para añadir una marca de agua a nuestras imágenes debemos crear la imagen que hará de "marca de agua". La marca de agua podría incluir el signo del Copyright, su nombre y apellido. Tampoco debería ser demasiado grande, al fin y al cabo no queremos ocultar nuestra imagen. También hay que tener en cuenta que la marca de agua debe tener fondo transparente y estar en formato PNG. Si ya has creado la imagen que hará de marca de agua, no falta más que mostrar el código que se encargara de incrustarla en nuestras imágenes, las cuales deberían de estar en formato JPEG: <?php function marcadeagua($img_original, $img_marcadeagua, $img_nueva, $calidad) { // obtener datos de la fotografia $info_original = getimagesize($img_original); $anchura_original = $info_original[0]; $altura_original = $info_original[1]; // obtener datos de la "marca de agua" $info_marcadeagua = getimagesize($img_marcadeagua); $anchura_marcadeagua = $info_marcadeagua[0]; $altura_marcadeagua = $info_marcadeagua[1]; // calcular la posición donde debe copiarse la "marca de agua" en la fotografia $horizextra = $anchura_original - $anchura_marcadeagua; $vertextra = $altura_original - $altura_marcadeagua; $horizmargen = round($horizextra / 2); $vertmargen = round($vertextra / 2); // crear imagen desde el original $original = ImageCreateFromJPEG($img_original); ImageAlphaBlending($original, true); // crear nueva imagen desde la marca de agua $marcadeagua = ImageCreateFromPNG($img_marcadeagua); // copiar la "marca de agua" en la fotografia ImageCopy($original, $marcadeagua, $horizmargin, $vertmargin, 0, 0, $anchura_marcadeagua, $altura_marcadeagua); // guardar la nueva imagen ImageJPEG($original, $img_nueva, $calidad); // cerrar las imágenes ImageDestroy($original); ImageDestroy($marcadeagua); } // aplicamos la funcion a una imagen "original.jpg" marcadeagua('original.jpg','marcadeagua.png','original_con_marca.jpg',100); ?> La función marcadeagua() incrusta la marca de agua en el centro de la imagen y recibe 4 parámetros: 1) La ubicación de la imagen original, a la cual queremos aplicar la marca de agua. 2) La ubicación de la imagen que hará de marca de agua. 3) La ubicación donde queremos guardar la nueva imagen creada. 4) La calidad o compresión que queremos aplicar a la nueva imagen creada. Si defines el valor como 100, se mantendrá la calidad dela imagen original. Si le aplicas cualquier valor inferior a 95, la imagen se comprimirá según el valor indicado y el resultado será una imagen de menor calidad pero también de menor tamaño en bytes. Si queremos aplicar la función marcadeagua() a varias imágenes, tendremos que colocar todas estas imágenes en un mismo directorio y crear otro directorio donde se guardaran las nuevas imágenes. Posteriormente solo nos quedará definir dos variables en el siguiente script y ejecutarlo: <?php // directorio donde se están las imágenes $DIR_ORIGINAL = 'c:fotos'; // directorio donse se guardaran las imágenes nuevas $DIR_NUEVA = 'c:fotosnuevas'; // no limitar el tiempo de ejecución del script, por defecto // su valor suelen ser 30 segundos los cuales posiblemente nos queden cortos set_time_limit(0); // funcion marcadeagua() function marcadeagua($img_original, $img_marcadeagua, $img_nueva, $calidad) { // obtener datos de la fotografia $info_original = getimagesize($img_original); $anchura_original = $info_original[0]; $altura_original = $info_original[1]; // obtener datos de la "marca de agua" $info_marcadeagua = getimagesize($img_marcadeagua); $anchura_marcadeagua = $info_marcadeagua[0]; $altura_marcadeagua = $info_marcadeagua[1]; // calcular la posición donde se debe incrustar la "marca de agua" $horizextra = $anchura_original - $anchura_marcadeagua; $vertextra = $altura_original - $altura_marcadeagua; $horizmargen = round($horizextra / 2); $vertmargen = round($vertextra / 2); // crear imagen desde el original $original = ImageCreateFromJPEG($img_original); ImageAlphaBlending($original, true); // crear nueva imagen desde la marca de agua $marcadeagua = ImageCreateFromPNG($img_marcadeagua); // copiar la "marca de agua" en la fotografia ImageCopy($original, $marcadeagua, $horizmargin, $vertmargin, 0, 0, $anchura_marcadeagua, $altura_marcadeagua); // guardar la nueva imagen ImageJPEG($original, $img_nueva, $calidad); // cerrar las imágenes ImageDestroy($original); ImageDestroy($marcadeagua); } $dir = opendir($DIR_ORIGINAL); while(false !== ($file = readdir($dir))) { if (!is_dir($file) && $file != '.' && $file != '..' && exif_imagetype($file)==2) { // aplicar funcion marcadeagua($DIR_ORIGINAL.'/'.$file,'marcadeagua.png',$DIR_NUEVA.'/'.$file,1 00); } } closedir($dir); ?> Como ya he comentado, la funcion marcadeagua() incrusta la marca de agua en el centro de la imagen. Si prefieres que lo incruste en cualquier otra parte, en la esquina inferior derecha por ejemplo, tendrás que modificar la función. Para ello debes tener en cuenta que la función ImageCopy() es la que se encarga de copiar la marca de agua en la imagen original, por lo tanto es aconsejable que leas la documentación de esta función. Bueno, espero que halla servido de algo. Aviso: Para que esto funcione es necesario que tu instalación de PHP soporte la librería GD. ---------------------------------------------------------------------------- -------------------------------------------------------- Este articulo ha sido sacado de otro, que a su ve lo saco al parecer del: http://guebmaster.com/articulo.php/102