Apposer automatiquement un filigrane avec PHP et Apache


Sur un blog on publie en général beaucoup d’images. Malheureusement il est très courant de se faire piller de droite et de gauche. Pour lutter contre ce fléau, l’une des techniques les plus efficaces est d’apposer un filigrane.

Sauf que cette opération est laborieuse, surtout si le nombre d’images est important. Il faut donc l’automatiser, et pour cela il y a des plugins et des webwares.

Plutôt que d’offrir encore un plugin à mon blog, je me suis mis en quête d’une autre technique. Celle que je propose utilise Apache et PHP pour réaliser cette opération.

Tout d’abord, je crée un fichier PHP que je nomme filigrane.php. L’idée consiste à récupérer l’adresse de l’image, de la charger avec GD et de la modifier en ajoutant par exemple un texte :

<?php
/* filigrane.php */
$filename = $_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
if (realpath(__FILE__) == realpath($filename)) {
    exit();
}
$stringSize = 3;
$footerSize = ($stringSize==1) ? 12 : 15;
$footer = date('d/m/Y H:i:s');

list($width, $height, $image_type) = getimagesize($filename);
$im = imagecreatefromjpeg($filename);
imagefilledrectangle (
        $im,
        0,
        $height,
        $width,
        $height - $footerSize, imagecolorallocate($im, 49, 49, 156));

imagestring($im,
        $stringSize,
        $width-(imagefontwidth($stringSize)*strlen($footer)) - 2,
        $height-$footerSize,
        $footer,
        imagecolorallocate($im, 255, 255, 255));

header( 'Content-Type: image/png' );
imagepng($im);

Il suffit ensuite de « capturer » les images et de les rediriger vers le script précédent :

RewriteEngine on
RewriteRule !\.(php)$ filigrane.php

Le résultat est simple mais efficace. Voici un avant/après.

Bien entendu, au lieu d’ajouter la date, vous pouvez apposer un copyright ou le nom de votre site. En travaillant un peu la technique, il est également possible d’utiliser un logo.

Crédits: Gonzalo Ayuso