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.

Related Posts