Ya sea porque queramos proteger las fotos que aparecen en nuestro blog, o por que nuestro cliente quiere proteger las imágenes que aparecen en su web , la única manera será poniendo una marca de agua a dichas imágenes. Para esto hay dos soluciones:

 

– Poner una marca de agua a cada una de nuestras imágenes a través de un programa tercero ( hay numerosas opciones ), sin embargo esta es una opción pobre, ya que para pocas imágenes sirve, pero no para un gran número de imágenes.


– Otra opción es crear un script PHP que meta una marca de agua en todas las imágenes que estén dentro de una determinada carpeta de nuestro FTP.

A continuación, os muestro cómo podéis conseguir esto con un sencillo script, que he redactado a juntando diversas fuentes de internet y personalizando el código. Pasos a seguir :

1. Escogeremos la carpeta en la que vamos a almacenar las imágenes que queremos proteger, por ejemplo: “/inmuebles/imagenes”.

2. En dicha carpeta, debemos de crear un archivo “.HTACCESS”, con el siguiente código:

{code type=php}
RewriteEngine on
RewriteRule ^(.*\.(gif|jpg|jpeg|png))$ http://miweb.es/inmuebles/imagenes/watermark.php?image=$1&watermark=watermark.png [NC]
{/code}

3. Crearemos un archivo llamado “watermark.php”, con el siguiente código:

{code type=php}
// Cargamos la imagen
function imagecreatefromfile($image_path)
{
// Obtenemos el tipo de imagen
list($width, $height, $image_type) = getimagesize($image_path);
switch ($image_type)
{
case IMAGETYPE_GIF: return imagecreatefromgif($image_path);
break;
case IMAGETYPE_JPEG: return imagecreatefromjpeg($image_path);
break;
case IMAGETYPE_PNG: return imagecreatefrompng($image_path);
break;
default: return ”;
break;
}
}
// Cargar la imagen en la memoria, y obtener sus dimensiones
$image = imagecreatefromfile($_GET[‘image’]);
$width = imagesx( $image );
$height = imagesy( $image );
if
die(‘No se puede cargar la imagen’);
// Cargar la marca de agua
$watermark = imagecreatefromfile($_GET[‘watermark’]);
//dimensiones de la marca de agua
$watermarkwidth=300;
$watermarkheight=300;
if (!$image)
die(‘No se puede cargar la marca de agua’);
//Redimensionar la marca de agua según el tamaño de la imagen que queremos //proteger
if ( $watermarkwidth>=$width && $watermarkheight>=$height )
{
$varx=$watermarkwidth / $width ;
$vary=$watermarkheight / $height ;
if ($varx>=$vary)
$water_resize_factor =$width / $watermarkwidth ;
else
$water_resize_factor = $height / $watermarkheight;
}
elseif ( $watermarkwidth>=$width && $watermarkheight<$height) $water_resize_factor = $width / $watermarkwidth ; else $water_resize_factor = $height / $watermarkheight; $new_watermarkwidth = $watermarkwidth * $water_resize_factor; $new_watermarkheight = $watermarkheight * $water_resize_factor; $new_watermark = imagecreatetruecolor($new_watermarkwidth , $new_watermarkheight); imagealphablending($new_watermark , false); imagecopyresampled($new_watermark , $watermark, 0, 0, 0, 0, $new_watermarkwidth, $new_watermarkheight, $watermarkwidth, $watermarkheight); $watermarkwidth = $new_watermarkwidth; $watermarkheight = $new_watermarkheight; $watermark = $new_watermark; } //calcular la posicion donde vamos a incrustar nuestra marca de agua $watermark_pos_x = ( $width-$watermarkwidth ) * .50; $watermark_pos_y = ($height - $watermarkheight ) * .50; //Mezclar imagen y marca de agua imagecopy($image, $watermark, $watermark_pos_x, $watermark_pos_y, 0, 0,imagesx($watermark), imagesy($watermark)); // Mostrar imagen header('Content-Type: image/jpeg'); imagejpeg($image, '', 100); // Usar la mejor calidad (100) // Borrar las imagens de la memoria imagedestroy($image); imagedestroy($watermark); {/code}

4. Por ultimo, debemos de subir a nuestro servidor FTP nuestro archivo “watermark.png”, que contendrá nuestra marca de agua. Debemos de subirlo todo al mismo directorio.


Con esto, ya tendremos nuestro script funcionando, y este añadirá automáticamente “marcas de agua” sobre nuestras fotos.

 

Espero que os sirva para vuestro propósito.