Script de Watermark en php

Comment marquer vos photos publiées sur Internet? Il y a de nombreuses façons de le faire via des logiciels de traitement d’images. J’avais besoin d’un système automatique simple : je pose mes photos dans un répertoire (In), je lance un script, les photos marquées sont créées dans un répertoire de sortie (Out) avec le même nom. Je n’ai pas à dimensionner quoi que ce soit pour chaque photo.

En pratique, nous avons un répertoire « In » pour les photos à traiter, un répertoire « Out » pour les photos traitées, le Logo à incruster et le script PHP. Il faut, en plus de PHP, que ImageMagick soit installé. L’incrustation est légère à 5%, il est possible de modifier cette valeur pour obtenir une incrustation plus ou moins marquée.

<?php
$dirIn = "In";
$dirOut = "Out";
$logo = "Logo.png";
$tmpFile = "tmp.png";
 
if ($dh = opendir($dirIn)) {
  while (($file = readdir($dh)) !== false) {
    $fileName = $dirIn."/".$file;
    if (!is_file($fileName)) {
      continue;
    }
    echo "File : $file : type : " . filetype($fileName) . "\n";
    list($width, $height, $type, $attr) = getimagesize($fileName);
 
    // Resize logo
    $cmd = "convert $logo -geometry '$width"."x"."$height' $tmpFile";
    exec($cmd);
    echo "> $cmd\n";
 
    // Put the watermark
    $cmd = "composite -watermark 5% -gravity center $tmpFile $fileName $dirOut/$file";
    exec($cmd);
    echo "> $cmd\n";
  }
  closedir($dh);
}
@unlink($tmpFile);


Je n’ai pas essayé ce script sous Windows, mais ça ne devrait pas poser de problème.

Releated Post

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *