如果您的 imagick lib 開始顯示:「Non-conforming drawing primitive...」,則可能是您的地區設定未正確設定。請找出所有 setlocale 並暫時將它們關閉,以便檢查是否可以解決問題。
(PECL imagick 2, PECL imagick 3)
Imagick::drawImage — 在目前影像上渲染 ImagickDraw 物件
draw
要在影像上渲染的繪圖操作。
成功時回傳 true
。
如果您的 imagick lib 開始顯示:「Non-conforming drawing primitive...」,則可能是您的地區設定未正確設定。請找出所有 setlocale 並暫時將它們關閉,以便檢查是否可以解決問題。
ImagickDraw (v 2.2.0) 似乎與 PHP-GTK2 (v 2.0.1) 不協調。
如果載入 php_gtk2.so,則在目前影像上渲染 ImagickDraw 物件會失敗(或導致沒有繪圖的平面影像)。
重現失敗的程式碼
#!/usr/bin/php5
<?php
dl("php_gtk2.so"); // 註解此行進行第二次嘗試
$string = "Hello world!";
$im = new Imagick();
$draw = new ImagickDraw();
$draw->setFillColor(new ImagickPixel('blue'));
$draw->setFontSize(28);
$metrix = $im->queryFontMetrics($draw, $string);
$draw->annotation(0,25,$string);
$im->newImage($metrix['textWidth'],$metrix['textHeight'], new ImagickPixel('white'));
$im->drawImage($draw);
$im->borderImage(new ImagickPixel('black'), 1, 1);
$im->setImageFormat('png');
$im->writeImage("./test.png");
?>