如果您的 imagick 库开始显示:"Non-conforming drawing primitive...", 这可能是因为您的区域设置没有正确设置。请找到所有 setlocale 并暂时将其删除,以便您可以检查一下,这将解决问题。
(PECL imagick 2, PECL imagick 3)
Imagick::drawImage — 在当前图像上渲染 ImagickDraw 对象
draw
要在图像上渲染的绘图操作。
成功时返回 true
。
如果您的 imagick 库开始显示:"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");
?>