PHP Imagick - setTextEncoding()函数不起作用

时间:2012-05-10 11:39:24

标签: php encoding imagemagick imagick

我正在尝试在Imagick对象上添加一些文字。

但是我使用setTextEncoding()函数,它仍然不起作用。

.......

$draw = new ImagickDraw();
$draw->setTextEncoding('utf-8');
$draw->setFont($fpath.'/process/ARIAL.TTF'); 
$draw->setFontSize(80);
$draw->setFillColor("#ffffff");

/*** annotate the text on the image ***/
$imageOrg->annotateImage($draw, 60, 100, 0, "onur küçükkeçe");

........

因此我得到了,

onur küçükkeçe

知道为什么它不起作用吗?

提前致谢。

更新

如果我将$ text变量设置为类似chr(252)的东西,那么我得到一个正确的结果

$text=chr(252);
$imageOrg->annotateImage($draw, 60, 100, 0, $text);

因此我得到了

ü

更新II

最后我找到了造成这种情况的原因。

出现问题是因为没有定义文档的字符集,但如果为脚本设置了字符集,那么imagick不起作用,因为文档的类型需要设置为image / png。

但我不知道如何解决它。

1 个答案:

答案 0 :(得分:1)

确定。我找到了解决方案。

php utf8_decode()函数解决了这个问题

.......

$draw = new ImagickDraw();
$draw->setTextEncoding('utf-8');
$draw->setFont($fpath.'/process/ARIAL.TTF'); 
$draw->setFontSize(80);
$draw->setFillColor("#ffffff");

/*** annotate the text on the image ***/
$imageOrg->annotateImage($draw, 60, 100, 0, utf8_decode("onur küçükkeçe"));

........