我在CentOS linux服务器上安装了ImageMagick。
我正在尝试让ImageMagick将unicode(非罗马)字体转换为图像。 我可以使用基于罗马/拉丁语的字体执行此操作,但不能使用非拉丁语,例如中文。
编辑*当我尝试转换非拉丁字体时,它们会显示为垃圾,例如%$ ?? W * ??
我在系统上安装了unicode字体,并将ImageMagick type.xml文件更新为 反映这一点(我也更新了我的定位数据库)。
当我跑(在我的shell中):#identify -list Type
我可以看到我的字体已经安装并且ImageMagick看到了它们但是当我运行我的文本到图像转换php脚本时它们(非拉丁字体)仍然不起作用
我查看了另一篇与此相关的文章: Make ImageMagick recognize a font
但在完成所有事情后,我仍然遇到同样的问题。 请帮忙。
感谢。
编辑: 这是与imagemagick初始化相关的一些代码:
$font = 'UNICODE.TTF';
/* Create imagickdraw object */
$draw = new ImagickDraw();
$draw->setFont($font);
$draw->setStrokeAntialias(true);
$draw->setTextAntialias(true);
$draw->setFontSize(100);
$draw->setTextEncoding("UTF-8");
//and than there is a bunch of code I use to manipulate the image shadow etc.
更新 自从通过对这篇文章的评论获得帮助后,我学会了:
ImageMagick能够转换unicode非拉丁字符 这是通过linux命令行将希伯来语传递给ImageMagick来测试的。
因此问题在于ImageMagick PHP模块能够解释unicode非拉丁文本。
php文件本身具有支持UTF-8的所有必要元素,实际上创建了一个 具有从相同文本varible派生的文件名的文件我传递给ImageMagick进行图像创建。 php以非拉丁语unicode文本成功保存在我的服务器上。
我在网上四处看看,但在此问题上无法找到有关此问题的任何信息 使用ImageMagick PHP模块以unicode非拉丁字体文本创建和映像。
这可能是一个ImageMagick错误吗?任何帮助,将不胜感激。谢谢。
答案 0 :(得分:0)
这个问题的解决方案是在我之前未在PHP中看到的编码问题中找到的。 基本上我将字符串拆分成单独的字符,并且需要以不会的方式这样做 销毁2字节的unicode字符。
我没想到要为那些试图帮我解决这个问题的人展示我的其余代码 对我来说是一个很大的错误。吸取教训。