Poner una marca de agua con HTACCESS

Watermak htaccess

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.

Comentarios

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.