2017-02-18 1 views
1

J'annote une image en utilisant Imagick:Annoter une image deux fois

$image = new Imagick('image.jpg'); 
$draw = new ImagickDraw(); 
$draw->setFillColor('#ffffff'); 
$draw->setFont('fonts/opensans-regular.ttf'); 
$draw->setFontSize(40); 
$image->annotateImage($draw, 20, 100, 0, 'The quick fox jumps over the lazy dog'); 

$image->setImageFormat('png'); 

header('Content-type: image/png'); 
echo $image; 

Comment puis-je utiliser annotateImage() deux fois afin d'insérer au texte des éléments avec des positions différentes? Quand je copie juste le paragraphe de dessin, la dernière utilisation n'est pas visible. Dois-je sauvegarder l'image et la modifier à nouveau ou existe-t-il un moyen de le faire à la volée? Merci d'avance.

Mise à jour:

simple ajout d'une seconde ImagickDraw() ne fonctionne pas, il est pas visible.

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

//first 
$draw = new ImagickDraw(); 
$draw->setFillColor('#ffffff'); 
$draw->setFont('fonts/opensans-regular.ttf'); 
$draw->setFontSize(40); 
$image->annotateImage($draw, 20, 100, 0, 'The quick fox jumps over the lazy dog'); 

//second 
$draw2 = new ImagickDraw(); 
$draw2->setFillColor('red'); 
$draw2->setFont('fonts/opensans-regular.ttf'); 
$draw2->setFontSize(40); 
$image->annotateImage($draw2, 20, 800, 0, 'The quick fox jumps over the lazy dog'); 

$image->setImageFormat('png'); 

header('Content-type: image/png'); 
echo $image; 
+0

Incluez le code que vous avez essayé et qui ne fonctionne pas pour vous. Il est probable que quelqu'un puisse vous dire quel est le problème. – miken32

+0

Je ne l'ai jamais fait, mais il me semble que si vous faites une seconde 'annotateImage' avec des coordonnées différentes' X' et 'Y', vous devriez faire ce que vous demandez – RiggsFolly

+0

Comment avez-vous essayé de l'utiliser deux fois? Ne devrait-il pas fonctionner en ajoutant: '$ draw2 = new ImagickDraw();' et faire la même chose avec le premier? –

Répondre

2

Voici un exemple de 2ème annotation que vous pouvez ajouter à l'image.

<?php 
$image = new Imagick(); 
$draw = new ImagickDraw(); 
$pixel = new ImagickPixel('white'); 
$image->newImage(800, 75, $pixel); 

$draw->setFillColor('black'); 
$draw->setFont('Bookman-DemiItalic'); 
$draw->setFontSize(30); 

$image->annotateImage($draw, 10, 25, 0, '1st line of annotation text here'); 
$image->annotateImage($draw, 10, 60, 0, '2nd line of annotation text here'); 
$image->setImageFormat('png'); 

header('Content-type: image/png'); 
echo $image; 

Sur la base des x,y coordonnées, vous pouvez ajouter des annotations où vous le souhaitez. Rappelez-vous juste qu'ils peuvent se chevaucher et les uns sur les autres.

+0

Oui c'est ce que je mets dans mon commentaire – RiggsFolly