
Ajouter automatiquement son logo sur les images volées
Une image volée c’est une image hébergée sur votre site et affichée sur un autre.
Sur le principe, je ne suis pas contre, tant qu’on rend à César ce qui appartient à César…
Mais la grande majorité des sites/forums/blogs qui affichent les images hébergées ailleurs ne prennent même pas la peine de préciser d’où elle provient. C’est rageant de perdre de la bande passante dans ces conditions.
Il y’a deux solutions à ce problème : interdire l’accès à vos images depuis d’autres sites ou signaler vous-même que cette image est hébergée chez vous en ajoutant un filigrane à l’image.
C’est de cette deuxième solution que je vais parler. Mais pour faire ça proprement, on va ajouter ce filigrane de façon automatique et uniquement en cas de vol d’image, de façon à ce que le filigrane ne s’affiche pas sur votre site.
Le principe de base est d’utiliser l’url rewriting pour faire passer l’affichage de l’image par un script PHP.
Il faut donc ajouter à la base de votre répertoire d’image un fichier .htaccess et un fichier de PHP.
.htaccess
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www.gamesandgeeks.com(/)?.*$
RewriteCond %{HTTP_REFERER} !^http://www.geekomatik.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.netvibes.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com(/)?.*$ [NC]
RewriteRule .*.(png|jpg|jpeg)$ /images/mark.php [NC, L]
Petite explication du fichier :
RewriteEngine on : active l’url Rewriting
Les lignes commençant par RewriteCond définissent les conditions de réécriture de l’url. Dans ce cas, on demande à réécrire tout le temps sauf quand le referer (le site appelant l’image) est soit votre propre site (ici Games and Geeks) soit un site que vous autorisez à utiliser l’image.
Et enfin, la ligne RewriteRule définie les extensions de fichier concernés et le script à appeler.
mark.php
Pour cette fonction, on va utiliser le Watermarker d’un précédent article.
-
-
include_once(‘watermarker.php’);
-
//Début de la configuration
-
// Répertoire racine du site
-
$rootPath = $_SERVER[‘DOCUMENT_ROOT’];
-
-
// Url racine du site
-
$rootUrl = ‘http://www.gamesandgeeks.com’;
-
-
// Chemin vers le logo à ajouter
-
$ logo = $_SERVER[‘DOCUMENT_ROOT’.‘/images/watermark.png’;
-
-
// Chemin vers le repertoire de cache du Watermarker
-
$cache = $_SERVER[‘DOCUMENT_ROOT’.‘/images/watermark.cache’;
-
//Fin de la configuration
-
-
// Chemin de l’image
-
$imagePath = $_SERVER[‘DOCUMENT_ROOT’].$_SERVER[‘REQUEST_URI’];
-
-
// Si l’image n’existe pas
-
}
-
-
// On marque l’image et on l’affiche
-
$watermarker = new Watermarker($logo, POSITION_BOTTOM, POSITION_RIGHT);
-
$watermarker->display($imagePath, 75, $cache);
-
Démonstration
Voilà une image tirée de mon blog. Si vous regardez le code de la page, vous verrez que le lien pointe directement sur l’image :

Mais si vous allez sur mon blog, vous verrez que l’image ne contient pas le filigrane :
L’image sur mon blog
Conclusion
Les gros sites on plutôt tendances à bloquer l’accès à leurs images ou à rediriger vers une image type. Et pour cause, ce script est plus consommateur de ressource que d’afficher directement l’image. Il n’est donc à utiliser que si vous décidez de dédier des ressources à ajouter des filigranes.





Moi je vois le filigrane sur ton site et ici …