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 :

Exemple #1 Création d'une miniature avec Imagick

<?php

header
('Content-type: image/jpeg');

$image = new Imagick('image.jpg');

// Si 0 est fourni comme paramètre de hauteur ou de largeur,
// les proportions seront conservées
$image->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 :

Exemple #2 Création de miniature de toutes les images JPG d'un dossier

<?php

$images
= new Imagick(glob('images
$im = new Imagick("test.png");


$im->thumbnailImage(200, null);


$im->borderImage(new ImagickPixel("white"), 5, 5);


$reflection = $im->clone();
$reflection->flipImage();


$gradient = new Imagick();


$gradient->newPseudoImage($reflection->getImageWidth() + 10, $reflection->getImageHeight() + 10, "gradient:transparent-black");


$reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);


$reflection->setImageOpacity( 0.3 );


$canvas = new Imagick();


$width = $im->getImageWidth() + 40;
$height = ($im->getImageHeight() * 2) + 30;
$canvas->newImage($width, $height, new ImagickPixel("black"));
$canvas->setImageFormat("png");


$canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10);
$canvas->compositeImage($reflection, imagick::COMPOSITE_OVER, 20, $im->getImageHeight() + 10);


header("Content-Type: image/png");
echo
$canvas;
?>

Résultat de l'exemple ci-dessus est similaire à :

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.

Exemple #4 Remplissage d'un texte avec un dégradé

<?php


$im = new Imagick();


$im->newPseudoImage(50, 50, "gradient:red-black");


$draw = new ImagickDraw();


$draw->pushPattern('gradient', 0, 0, 50, 50);


$draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);


$draw->popPattern();


$draw->setFillPatternURL('#gradient');


$draw->setFontSize(52);


$draw->annotation(20, 50, "Bonjour le monde !");


$canvas = new Imagick();
$canvas->newImage(350, 70, "white");


$canvas->drawImage($draw);


$canvas->borderImage('black', 1, 1);


$canvas->setImageFormat('png');


header("Content-Type: image/png");
echo
$canvas;
?>

Résultat de l'exemple ci-dessus est similaire à :

Affichage de l'exemple : Remplissage d'un texte avec un dégradé

Exemple avec des images GIF animées

Exemple #5 Lit une image GIF et redimensionne toutes les frames

<?php


$im = new Imagick("example.gif");


foreach ($im as $frame) {

$frame->thumbnailImage(50, 50);


$frame->setImagePage(50, 50, 0, 0);
}


$im->writeImages("example_small.gif", true);
?>

Exemple avec des ellipses primitives et des polices personalisées

Exemple #6 Create a PHP logo

<?php

$width = 400;
$height = 210;


$img = new Imagick();
$img->newImage($width, $height, new ImagickPixel('transparent'));


$draw = new ImagickDraw();

$draw->setFillColor('#777bb4');

$draw->ellipse($width / 2, $height / 2, $width / 2, $height / 2, 0, 360);

$img->drawImage($draw);


$draw->setFillColor('black');

$draw->setStrokeColor('white');

$draw->setStrokeWidth(2);

$draw->setTextKerning(-8);

$draw->setFont('Handel Gothic.ttf');
$draw->setFontSize(150);

$draw->setGravity(Imagick::GRAVITY_CENTER);


$img->annotateImage($draw, 0, -10, 0, 'php');
$img->setImageFormat('png');


header('Content-Type: image/png');
echo
$img;
?>

Résultat de l'exemple ci-dessus est similaire à :

Affichage de l'exemple : Création d'un logo PHP avec Imagick
To Top