我想在图像中添加俄语文本。我在Windows机器上使用PIL 1.1.7和Python 2.7。由于PIL编译了without libfreetype library,因此我在开发服务器上使用以下命令:
font_text = ImageFont.load('helvR24.pil')
draw.text((0, 0), 'Текст на русском', font=font_text)
(helvR24.pil
取自http://effbot.org/media/downloads/pilfonts.zip)
在生产环境中,我执行以下操作:
font_text = ImageFont.truetype('HelveticaRegular.ttf', 24, encoding="utf-8")
draw.text((0, 0), 'Текст на русском', font=font_text)
(试图使用unic
,cp-1251
而不是utf-8
)
在这两种情况下,它都不显示俄语字符(而是显示正方形或虚拟字符)。我认为它不适用于开发环境,因为很可能helvR24.pil
不包含俄语字符(不知道如何检查)。但是HelveticaRegular.ttf
肯定有。我还检查了我的.py
文件是否有γ-8编码。即使使用默认字体,也不显示俄语字符:
draw.text((0, 0), 'Текст на русском', font=ImageFont.load_default())
我还应该尝试/验证什么?我查过https://stackoverflow.com/a/18729512/604388-没用。
我有一个类似的问题并解决了。
有几件事你必须小心:
代码如下:
结果如下
你能检查一下你的TTF文件吗?我怀疑它不支持你想画的角色。
在我的电脑(Ubuntu13.04)上,这个序列会产生正确的图像:
注意:当我没有指定unicode(
u'...'
)时,结果是mojibake。相关问题 更多 >
编程相关推荐