Con bastante frecuencia me encuentro a webmasters preocupados por que otros webmasters les roben sus imágenes o que las pongan en otras webs sin mencionar el sitio original. Una solución bastante eficiente para este problema es añadir una marca en una parte de la imagen con la url de nuestro sitio web de tal forma que cuando alguien la coloque en algún otro lugar siempre se podrá ver de donde proviene
Esto se puede hacer facilmente con PHP gracias a la biblioteca gráfica GD. Primero guardaremos las imágenes que vayamos a mostrar con la marca en un directorio que no sea accesible desde la web como puede ser un directorio protegido con htaccess o en su defecto un directorio con un nombre extraño, para que nadie lo pueda encontrar. Nosotros las guardaremos en /imgimgimgimgxz321zx/ . Crea un directorio en el directorio raiz de tu web que siga las directrices que hemos explicado y sube ahí las imágenes.
Una vez hecho esto, necesitaremos el script PHP que muestra la imagen con su marca. Veamos como hacerlo:
<?php
header("Contet-type: image/jpeg"); // Esto indica al navegador que se le va a enviar datos de imagen
if(!isset($_GET['imagen'])) {
$imagen = '';
$ext = '';
} else {
$imagen = $_GET['imagen'];
$ext = strtolower(end(explode(".",$_GET['imagen']))); // Obtenemos así la extensión de la imagen
}
$validext = array("jpeg","jpg","png","gif"); // Definimos las extensiones válidas
$dir = '/var/www/imgimgimgimgxz321zx/'; // Aquí va la ruta completa hacia el directorio donde se encuentran las imágenes
$url = 'www.webtaller.com'; // Texto con el que marcaremos la imagen
if(empty($imagen) || !in_array($ext,$validext) || !file_exists($dir.$imagen)) { /* Si no se ha enviado una imagen como parámetro o la extensión no es válida, enviaremos una imagen de error */
$im = imagecreate ( 320 , 240 ); // Tamaño de la imagen
$bg = imagecolorallocate ( $im , 255 , 255 , 255 ); // El primer color que indiquemos será el color de fondo
$textcolor = imagecolorallocate ( $im , 0 , 0 , 0 ); // Color negro para el texto
imagestring ( $im , 5 , 120 , 100 , "Error" , $textcolor ); // Escribimos "Error" en la imagenimagejpeg($im,'',90); // Mostramos la imagen por pantalla con una calidad de 90
} else { // Aquí debemos marcar la imagen que nos pasan por parámetro y mostrarla
if($ext == "jpeg" || $ext == "jpg") { // Creamos una imagen desde una imagen jpeg
$im = imagecreatefromjpeg($dir.$imagen);
} elseif($ext == "gif") {
$im = imagecreatefromgif($dir.$imagen);
} else {
$im = imagecreatefrompng($dir.$imagen);
} // A partir de aquí ya tenemos la imagen en $im, solo queda marcarla
$blanco = imagecolorallocate ( $im , 255 , 255 , 255 );
$negro = imagecolorallocate ( $im , 0 , 0 , 0 );$ancho = imagesx($im); // Ancho de la imagen
$alto = imagesy($im); // Alto/* Ahora dibujaremos un rectángulo para que no tengamos problemas si la imagen es del mismo color que le texto que vamos a escribir en ella */
$fontwidth = imagefontwidth(5);
$fontheight = imagefontheight(5);$recuadro_ancho = $fontwidth*strlen($url)+5; // Cálculamos lo que ocupa el texto en ancho
$recuadro_alto = $fontheight+5;imagefilledrectangle($im,0,$alto-20,$recuadro_ancho,$alto-5+$recuadro_alto,$blanco);
// Por último escribimos la url de nuestro sitio en la imagen
imagestring($im,20,0,$alto-20,$url,$negro);
imagejpeg($im,'',90);
}
?>
Guardaremos este código en un archivo llamado "mostrar.php" y ya está! Ya tenemos el script que nos marca las imágenes!
Ahora solo queda utilizarlo en nuestra web. Por ejemplo donde antes teníamos la imagen así:
<img src="coche.jpg">
Ahora la tendremos que poner así:
<img src="mostrar.php?imagen=coche.jpg">
Por supuesto, la imagen coche.jpg debe estar en el directorio que ya mencionamos anteriormente y ahora si abrirmos nuestra web veremos como aparece la imagen imagen con una marca abajo a la izquierda con la url de nuestra web.
A partir de esta idea se pueden conseguir otros tipos de marcas como por ejemplo poner el logo de la web o que el texto sea más transparente y no dañe tanto a la imagen. Puedes encontrar más información sobre la biblioteca GD aquí http://es2.php.net/gd
Y aquí un ejemplo de lo que hace este script:
![]() |
![]() |
| Antes | Después |
Usuarios que han visto este tema también han visto...
- Profiling en PHP: ¿qué partes consumen más?
- Proteger páginas por HTTP en PHP
- Introducción rápida a las sesiones
- Comprimir un archivo en el servidor en PHP
- La directiva register_globals en PHP 4.2.0
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.