Articles    Logiciels

 PHP et Imagick: texte multilignes inséré dans une image

Tout d'abord, préparer l'image qui va recevoir le texte

$image=new Imagick();
$image->newImage(410, 200, new ImagickPixel('transparent'));

Préparer les paramètres d'écriture du texte:

$draw=new ImagickDraw();
$draw->setFont(dirname(__FILE__)."/path/to/my/font.ttf");
$draw->setFontSize( 30 );
$draw->setFillColor("#e71760");

Choisir l'alignement:

$draw->setGravity ( imagick::GRAVITY_NORTHEAST );   //or GRAVITY_CENTER or GRAVITY_NORTHWEST

Procéder à l'insertion du texte:

$image->annotateImage($draw, 0, 0, 0, wordwrap("Mon texte a insérer sur plusieurs lignes",27,"\n"));

Note importante: la fonction annotateImage ne va pas fait les sauts à la ligne adéquats en fonction de la largeur de l'image, c'est pourquoi il est nécessaire d'utiliser la fonction PHP wordwrap qui va insérer les sauts de ligne en comptant des lignes de 27 caractères.

Le choix de 27 caractères a été fait empiriquement, il correspond à la largeur d'une ligne de la police utilisée à la taille choisie (setFontSize de 30).

Enfin, raboter l'image:

$image->trimImage(0);

Et voilà!!!


 

 

 

 

Copyright 2007 - 2018