4

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

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() 

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

4

1 回答 1

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来解决该问题。

输出:

测试.png

于 2014-02-22T06:39:22.563 回答