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.
Deja una respuesta