ImageWorkshop, une classe PHP flexible de gestion d’images

27 mai 2012
PHP

ImageWorkshop est une classe PHP utilisant la libraire GD pour traiter facilement des images. Flexible et rapide d’exécution, la classe vous permettra de générer tout un tas d’opérations : thumbnails, watermarks, mais aussi des tâches plus complexes telles que des transformations.

La notion de calque

ImageWorkshop a été pensé pour pouvoir effectuer toutes les opérations possibles que l’on voudrait appliquer sur des images : positionnement, crop, superposition, rotation, ajout de texte, etc… Bref, il n’y a pas vraiment de limite. ImageWorkshop est une classe PHP assez flexible mais qui reste simple d’utilisation.

Le fonctionnement de la classe est semblable au principe des calques sur Photoshop : chaque objet ImageWorkshop est un « layer », autrement dit un calque, qui possède ses propres dimensions et une image de fond, et sur lequel vous pouvez appliquer différentes actions. Par exemple, vous pouvez superposer une infinité de calques dans le but d’obtenir une seule image à partir de plusieurs.

Utilisation de la classe

On commence par initialiser le calque à partir d’un fichier. Ses dimensions sont celles de l’image ; vous pouvez d’ailleurs les obtenir via ses getters getWidth() et getHeight() :

$layer = new ImageWorkshop(array(
    "imageFromPath" => "/images/image.ppg",
));

Ensuite, appliquons une action sur le calque. Par exemple ici, nous allons effectuer un redimensionnement de l’image avec la méthode resizeInPixel() pour qu’elle ait une largeur de 125px (premier argument), sans définir la hauteur (deuxième paramètre à null) tout en conservant son ratio (troisième paramètre à true). Puis une rotation de -35 degrés avec la méthode rotate().

$newWidth = 125;
$angle = -35;
$layer->resizeInPixel($newWidth, null, true);
$layer->rotate($angle);

Voici un autre exemple, celui d’une superposition de deux images ; pratique pour créer dynamiquement des images avec un watermark. Ici, nous plaçons un logo sur une image, en bas à droite à droite avec une marge de 15px à droite et 40px en bas.

$layer = new ImageWorkshop(array(
    "imageFromPath" => "/images/image.png",
));
$logo = new ImageWorkshop(array(
    "imageFromPath" => "/images/logo.png",
));
$layer->addLayerOnTop($logo, 15, 40, "RB");

Puis on termine par sauvegarder l’image finale avec la méthode save(). Dans notre exemple, nous sauvegardons un PNG transparent grâce au quatrième paramètre qui définit null en couleur de fond, et on crée automatiquement le dossier images s’il n’existe pas.

$folder = __DIR__."../images";
$name = "image_finale.png";
$createFolder = true;
$bgColor = null;
$quality = 90;
$layer->save($folder, $name, $createFolder, $bgColor, $quality);

ImageWorkshop est donc une classe PHP facile à prendre en main, qui permet d’effectuer des opérations diverses sur des images. Vous retrouverez d’autres exemples sur le site officiel avec une documentation complète. La classe est récente et peut être sujet à des améliorations. N’hésitez donc pas à participer au projet via Github.

Requis : GD Library
Compatibilité : Tous navigateurs
Démonstration : http://phpimageworkshop.com/
Licence : Libre

Commentaires

  • Welcominh

    Ah ca faisait longtemps un article sur PHP :)

  • Tonton

    Pas mal du tout. A comparer avec http://www.graphicsmagick.org/

  • Kvix

    merci :)

  • Klaitos

    Intéressant, je risque d’en avoir besoin pour un projet. Merci :)