« 
 »

PHP : Créer un watermark pour vos images

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"]

<?php
$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

A propos de l'auteur :

avatar

Passionné par l'univers du Web, les Nouvelles Technologies et le High-Tech, je partage sur Place4Geek mes découvertes et le meilleur de l’actualité geek, du net, des jeux... Vous pouvez me contacter personnellement sur lorris[.at]place4geek.com ou par message privé sur Twitter.
4 commentaires sur PHP : Créer un watermark pour vos images
  1. Pingback: Tweets that mention PHP : Créer un watermark pour vos images - -- Topsy.com

  2. avatar
  3. avatar
  4. avatar
    • atlnet62
    • 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.

Laisser un commentaire

*

Être averti par mail s'il y a de nouveaux commentaires.

Suivez nous sur Twitter Devenez fan de Place4Geek Suivez nous sur Google+ Abonnez-vous à la chaîne Place4Geek Abonnez-vous à notre flux RSS