Bonsoir à tous,
Professionnel de la photo, amateur, ou simplement pour protéger vos créations ou captures d’écran, il vous est déjà arrivé de vous demander comment protéger vos créations.
Si vous utilisez un site web en PHP, ceci pourrait bien vous intéresser, car cela vous évitera de modifier chacune de vos images une par une pour ajouter un filigrane (watermark en anglais) de votre choix.
Objectif
Le but est de placer dynamiquement un texte sur vos images.
Pour placer un texte, vous aurez besoin d’une image au format JPG et d’une police de texte de façon à générer votre filigrane. Il faudra mettre cette police d’écriture sur votre serveur (format .TTF)
Comment ?
Nous allons donc utiliser une fonction PHP que voici WatermarkImage:
function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile) {
list($width, $height) = getimagesize($SourceFile);
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($SourceFile);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);
$black = imagecolorallocate($image_p, 0, 0, 0);
$font = ‘arial.ttf’;
$font_size = 10;
imagettftext($image_p, $font_size, 0, 10, 20, $black, $font, $WaterMarkText);
if ($DestinationFile<>”) {
imagejpeg ($image_p, $DestinationFile, 100);
} else {
header(‘Content-Type: image/jpeg’);
imagejpeg($image_p, null, 100);
};
imagedestroy($image);
imagedestroy($image_p);
};
?>
Cette fonction prend 3 paramètres qui sont :
- $SourceFile : Chemin du fichier source
- $WaterMarkText : Texte Filigrane
- $DestinationFile : Fichier de destination
La chemin du fichier source doit être le chemin complet pour accéder à l’image depuis la racine du serveur.
Le texte filigrane correspond au texte que vous voulez superposer sur l’image (par exemple url de votre site ou votre signature …).
Le dernier paramètre (Fichier de destination) peut être null ou correspondre à un chemin qui sera le chemin de la nouvelle image avec le watermark.
Comment cette fonction agit-elle ?
La fonction lit votre image puis elle crée un nouvel objet image en utilisant la fonction imagecopyresampled().
Ensuite elle utilise votre police d’écriture (ici Arial.ttf) et la fonction imagettftext() qui va écrire votre watermark sur votre image.
Le dernier bloc de code avec If … else … correspond au dernier paramètre de votre fonction : à savoir si la fonction doit juste afficher l’image ou alors l’enregistrer sur le serveur.
Utilisation
Pour utiliser la fonction, il vous suffit de l’appeler de la manière suivante :
$SourceFile = ‘/images/image1.jpg’;
$DestinationFile = ‘/images/image1-watermark.jpg’; // Laissez ” si vous ne voulez pas enregistrer l’image crée
$WaterMarkText = ‘Votre texte’;
watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile);
?>
Pour aller plus loin…
Il est bien sûr possible de créer des filigranes bien plus complexes ou plus jolis.
Notamment en jouant sur la propriété de transparence (opacity) de la fonction imagecopyresampled(), centrer votre filigrane. Ou encore utiliser une image comme filigrane plutôt qu’un texte.
Voici un exemple :
[spoiler show="Montrer" hide="Cacher"]
$filename = $_GET[‘mark’];
$watermark = ‘watermark.gif’;
$dest = imagecreatefromjpeg($filename);
$src = imagecreatefromgif($watermark);
list($width, $height, $type, $attr)=getimagesize($filename);
// Copy and merge
$markwidth = 225;
$markheight = 32;
$opacity = 32;
imagecopymerge($dest, $src, ($width-$markwidth)>>1, ($height-$markheight)>>1, 0, 0, $markwidth, $markheight, $opacity);
// Output and free from memory
header(‘Content-Type: image/jpeg’);
imagegif($dest);
imagedestroy($dest);
imagedestroy($src);
?>
[/spoiler]
Voilà les zamis geeks, j’espère que ce petit tutoriel vous aura bien plus. N’hésitez pas à nous laisser des commentaires ou des scripts intéressants que vous auriez pu créer ![]()
A bientôt !
Source : PHPJabbers






Actu Geek
Mobile
Dev
FunnyGeek
OS
Angry Birds
Cat Physics
League of Legends





Pingback: Tweets that mention PHP : Créer un watermark pour vos images - -- Topsy.com
great site and your writing style is amazing. just found your site on the web. l’ll come back later for sure!
Thanks a lot Darmowy.
We try to share our knowledge and our passion for computers.
Il serait bien de préciser que pour utiliser ce script il faut d’abord installer la library GD dans php. sinon c’est génial.