&reftitle.examples;
Utilisation simple Imagick rend la manipulation des images via PHP extrêmement facile grâce à une interface orientée objet. Voici un exemple rapide illustrant la création d'une miniature : Création d'une miniature avec Imagick thumbnailImage(100, 0); echo $image; ?> ]]> En utilisant SPL ou tout autre fonctionnalité orientée objet supportée par Imagick, il devient simple de redimensionner tous les fichiers d'un dossier (utile pour des scripts batch redimensionnant des images issues d'un appareil photo numérique afin de les rendre lisibles sur le web). Voici un exemple de redimensionnement de toutes les images JPG d'un dossier, tout en conservant les métadonnées : Création de miniature de toutes les images JPG d'un dossier thumbnailImage(1024,0); } $images->writeImages(); ?> ]]> Voici un exemple permettant de créer le reflet d'une image. Ce reflet est créé en retournant l'image et en y ajoutant un dégradé. Ensuite, l'image original et son reflet sont ajoutés dans une nouvelle image. Création d'un reflet sur une image thumbnailImage(200, null); /* Création d'une bordure */ $im->borderImage(new ImagickPixel("white"), 5, 5); /* Clône l'image et on la retourne */ $reflection = $im->clone(); $reflection->flipImage(); /* Création du dégradé. Il sera ajouté à l'image retournée */ $gradient = new Imagick(); /* Le dégradé doit être assez large pour l'image et ses bordures */ $gradient->newPseudoImage($reflection->getImageWidth() + 10, $reflection->getImageHeight() + 10, "gradient:transparent-black"); /* Ajout du dégradé sur l'image retournée */ $reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0); /* Ajout d'un peu d'opacité. Nécessite ImageMagick 6.2.9 ou supérieur */ $reflection->setImageOpacity( 0.3 ); /* Création d'une image vide */ $canvas = new Imagick(); /* L'image vide doit être assez large pour contenir les 2 images */ $width = $im->getImageWidth() + 40; $height = ($im->getImageHeight() * 2) + 30; $canvas->newImage($width, $height, new ImagickPixel("black")); $canvas->setImageFormat("png"); /* Ajout de l'image originale et de l'image retournée dans notre nouvelle image */ $canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10); $canvas->compositeImage($reflection, imagick::COMPOSITE_OVER, 20, $im->getImageHeight() + 10); /* Affichage de l'image */ header("Content-Type: image/png"); echo $canvas; ?> ]]> &example.outputs.similar; Affichage de l'exemple : Création d'un reflet sur une image Voici un exemple montrant comment remplir un masque lors du dessin de l'image. Remplissage d'un texte avec un dégradé newPseudoImage(50, 50, "gradient:red-black"); /* Création d'un nouvel objet imagickdraw */ $draw = new ImagickDraw(); /* On commence un nouveau masque nommé "gradient" */ $draw->pushPattern('gradient', 0, 0, 50, 50); /* Ajout du dégradé sur le masque */ $draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im); /* Fermeture du masque */ $draw->popPattern(); /* Utilisation du masque nommé "gradient" comme remplissage */ $draw->setFillPatternURL('#gradient'); /* Définition de la taille du texte à 52 */ $draw->setFontSize(52); /* Ajout d'un texte */ $draw->annotation(20, 50, "Bonjour le monde !"); /* Création d'un nouvel objet et d'une image blanche */ $canvas = new Imagick(); $canvas->newImage(350, 70, "white"); /* Dessine le ImagickDraw sur la nouvelle image */ $canvas->drawImage($draw); /* Une bordure noire d'un pixel autour de l'image */ $canvas->borderImage('black', 1, 1); /* Définition du format à PNG */ $canvas->setImageFormat('png'); /* Affiche l'image */ header("Content-Type: image/png"); echo $canvas; ?> ]]> &example.outputs.similar; Affichage de l'exemple : Remplissage d'un texte avec un dégradé Exemple avec des images GIF animées Lit une image GIF et redimensionne toutes les frames thumbnailImage(50, 50); /* Définit le canevas virtuel à la bonne taille */ $frame->setImagePage(50, 50, 0, 0); } /* Notez l'utilisation de writeImages au lieu de writeImage */ $im->writeImages("example_small.gif", true); ?> ]]> Exemple avec des ellipses primitives et des polices personalisées Create a PHP logo newImage($width, $height, new ImagickPixel('transparent')); /* Nouvelle instance ImagickDraw pour dessiner l'ellipse */ $draw = new ImagickDraw(); /* Définit la couleur violette pour remplir l'ellipse */ $draw->setFillColor('#777bb4'); /* Définit les dimensions de l'ellipse */ $draw->ellipse($width / 2, $height / 2, $width / 2, $height / 2, 0, 360); /* Dessine l'ellipse dans la toile */ $img->drawImage($draw); /* Réinitialise la couleur de remplissage, passant du violet au noir pour le texte (note : nous ré-utilisons l'objet ImagickDraw) */ $draw->setFillColor('black'); /* Définit à blanc la couleur du trait de la bordure */ $draw->setStrokeColor('white'); /* Rend plus fin le trait de la bordure */ $draw->setStrokeWidth(2); /* Définit le crénage de la police (une valeur négative signifie que les lettres sont proches les unes des autres) */ $draw->setTextKerning(-8); /* Définit la police et sa taille à utiliser dans le logo PHP */ $draw->setFont('Handel Gothic.ttf'); $draw->setFontSize(150); /* On centre le texte horizontalement et verticalement */ $draw->setGravity(Imagick::GRAVITY_CENTER); /* Ajout de "php" au centre, avec une position en Y de -10 dans la toile (à l'intérieur de l'ellipse) */ $img->annotateImage($draw, 0, -10, 0, 'php'); $img->setImageFormat('png'); /* On définit l'en-tête approprié pour le PNG et on affiche l'image */ header('Content-Type: image/png'); echo $img; ?> ]]> &example.outputs.similar; Affichage de l'exemple : Création d'un logo PHP avec Imagick