【问题标题】:PHP Imagick - setTextEncoding() function doesn't workPHP Imagick - setTextEncoding() 函数不起作用
【发布时间】:2012-05-10 11:39:24
【问题描述】:

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

但我不知道该如何解决。

【问题讨论】:

  • 如果您自己解决问题,最好将修复发布为答案而不是问题的更新。这样你就可以接受它,其他人也可以投票,你的问题就会从未回答的问题列表中删除。
  • @JeffreyBlake 我还不能解决问题。这是因为没有定义文档的编码。
  • 我的错误。当我看到你的更新时,我以为你在说你已经解决了。
  • 您的实际 PHP 脚本(代码本身)是否以 UTF-8 编码?
  • @JohnFlatness 我在记事本中打开了文档并将其保存为 UTF-8 但随后 imagick 无法输出图像,只能输出一些字符

标签: php encoding imagemagick imagick


【解决方案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"));

........

【讨论】:

  • 您好,我尝试了您的解决方案来解决我的问题。但它仍然不起作用。也许我没有正确设置 utf-8 格式。我如何确保这一点?我的问题在这里说明:stackoverflow.com/questions/11101544/…
猜你喜欢
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
  • 2012-08-08
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 2011-06-02
相关资源
最近更新 更多