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


PHP Imagick - setTextEncoding() function doesn't work

我正在尝试在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);

结果我得到

ü

更新二

最后,我找到了导致这种情况的原因。

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

但我不知道如何解决它。

好的。我找到了解决方案。

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"));
........