在PIL中为Python渲染波斯语(波斯语)单词

时间:2013-11-08 14:20:53

标签: python python-3.x fonts python-imaging-library persian

我正在尝试根据波斯语(波斯语)文本制作图像。 我正在使用PIL for Python3。这是我的代码:

from PIL import Image, ImageFont, ImageDraw
text = "خطاب"
image = Image.new("RGBA", (100,100), (255,255,255))
font = ImageFont.truetype("FreeFarsiMono.ttf", 60, encoding='unic')
draw = ImageDraw.Draw(image)
draw.text((0,0), text, (0,0,0), font=font)
image.save("Test.png")
image.show() 

然而,当我运行代码时,我会得到一些带有问号的矩形框,而不是文本的图像! 我很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

首先,您必须设置源代码:

# -*- coding: utf-8 -*-

然后你必须解码你的文字:

text = text.decode('utf-8')

你的最终代码应该是这样的:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from PIL import Image, ImageFont, ImageDraw

text = "ﻡﻼﺳ"
text = text.decode('utf-8')
image = Image.new("RGBA", (100,100), (255,255,255))
font = ImageFont.truetype("yekan.ttf", 45, encoding='unic')
draw = ImageDraw.Draw(image)
draw.text((0,0), text, (0,0,0), font=font)
image.save("Test.png")
image.show()

注意如果你的信件已经分开,你就可以转换它们;例如您可以使用awebfont来解决该问题。

输出:

Test.png