mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-03-24 08:52:09 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@328912 c90b9560-bf6c-de11-be94-00142212c4b1
279 lines
8.3 KiB
XML
279 lines
8.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 3739933b8c796d45aad74410caebb2734dc00aa7 Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: yes -->
|
|
|
|
<chapter xml:id="imagick.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
&reftitle.examples;
|
|
<section xml:id="imagick.examples-1">
|
|
<title>Utilisation simple</title>
|
|
<para>
|
|
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 :
|
|
<example>
|
|
<title>Création d'une miniature avec Imagick</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?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;
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
|
|
<para>
|
|
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 :
|
|
<example>
|
|
<title>Création de miniature de toutes les images JPG d'un dossier</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
$images = new Imagick(glob('images/*.JPG'));
|
|
|
|
foreach($images as $image) {
|
|
|
|
// On fournit 0 en guise de paramètre afin de conserver les proportions
|
|
$image->thumbnailImage(1024,0);
|
|
|
|
}
|
|
|
|
$images->writeImages();
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
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.
|
|
<example>
|
|
<title>Création d'un reflet sur une image</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
/* Lecture de l'image */
|
|
$im = new Imagick("test.png");
|
|
|
|
/* Création d'une miniature de l'image */
|
|
$im->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;
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs.similar;
|
|
<mediaobject>
|
|
<alt>Affichage de l'exemple : Création d'un reflet sur une image</alt>
|
|
<imageobject>
|
|
<imagedata fileref="en/reference/imagick/figures/hello_world_reflection.png"/>
|
|
</imageobject>
|
|
</mediaobject>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Voici un exemple montrant comment remplir un masque lors du dessin de l'image.
|
|
<example>
|
|
<title>Remplissage d'un texte avec un dégradé</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
/* Création d'un nouvel objet imagick */
|
|
$im = new Imagick();
|
|
|
|
/* Création d'une nouvelle image. Elle sera utilisée comme masque de remplissage */
|
|
$im->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;
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs.similar;
|
|
<mediaobject>
|
|
<alt>Affichage de l'exemple : Remplissage d'un texte avec un dégradé</alt>
|
|
<imageobject>
|
|
<imagedata fileref="en/reference/imagick/figures/hello_world.png"/>
|
|
</imageobject>
|
|
</mediaobject>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Exemple avec des images GIF animées
|
|
<example>
|
|
<title>Lit une image GIF et redimensionne toutes les frames</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
/* Crée un nouvel objet imagick et lit une image GIF */
|
|
$im = new Imagick("example.gif");
|
|
|
|
/* Redimensionne toutes les frames */
|
|
foreach ($im as $frame) {
|
|
/* 50x50 frames */
|
|
$frame->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);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Exemple avec des ellipses primitives et des polices personalisées
|
|
<example>
|
|
<title>Create a PHP logo</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
/* Définit la largeur et la hauteur en proportion du logo PHP */
|
|
$width = 400;
|
|
$height = 210;
|
|
|
|
/* Crée un objet Imagick avec une toile transparent */
|
|
$img = new Imagick();
|
|
$img->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;
|
|
?>
|
|
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs.similar;
|
|
<mediaobject>
|
|
<alt>Affichage de l'exemple : Création d'un logo PHP avec Imagick</alt>
|
|
<imageobject>
|
|
<imagedata fileref="en/reference/imagick/figures/php_logo.png"/>
|
|
</imageobject>
|
|
</mediaobject>
|
|
</example>
|
|
</para>
|
|
</section>
|
|
</chapter>
|
|
|
|
|