2017-02-18 46 views
1

我用註釋的Imagick圖像:註解圖像兩次

$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; 

我怎麼能使用annotateImage()兩次,以便插入的文本將不同位置的元素?當我只複製繪圖段落時,最後一次使用不可見。我是否必須保存圖像並重新編輯它,或者存在一種方法來實時執行它?提前致謝。

更新:

只是增加第二ImagickDraw()不工作,這是不可見的。

$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

包括您嘗試過的代碼對您不適用。有人可能會告訴你問題是什麼。 – miken32

+0

從來沒有這樣做過,但在我看來,如果你用不同的'X'和'Y'座標來做第二個'annotateImage',它應該做你正在問的問題 – RiggsFolly

+0

你是怎麼嘗試使用它兩次的?它不應該通過添加:'draw2 = new ImagickDraw();'來工作,並且像第一個一樣做? –

回答

2

以下是可以添加到圖像的第二個註釋的示例。

<?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; 

根據x,y座標,您可以在自己喜歡的位置添加註釋。請記住,它們可以重疊並相互重疊。

+0

是的,這就是我在評論中所表達的意思 – RiggsFolly