解决 draw.text()汉字乱码问题
时间: 2023-09-18 17:06:37 浏览: 303
在使用Python的PIL库绘制中文时,可能会遇到显示乱码的问题。这是因为PIL库默认不支持中文字符集。
解决方法有两种,一种是使用字体文件,另一种是使用第三方库。
1. 使用字体文件
在绘制中文之前,需要先指定一个支持中文的字体文件。
示例代码:
```
from PIL import Image, ImageDraw, ImageFont
# 加载字体文件
font_file = 'msyh.ttf'
font = ImageFont.truetype(font_file, 24)
# 创建画布
image = Image.new('RGB', (200, 100), (255, 255, 255))
# 创建绘制对象
draw = ImageDraw.Draw(image)
# 绘制中文
draw.text((50, 50), '你好,世界!', font=font, fill=(0, 0, 0))
# 保存图片
image.save('chinese.png')
```
在上面的代码中,我们使用了微软雅黑字体文件`msyh.ttf`来绘制中文。
2. 使用第三方库
如果不想使用字体文件,可以使用第三方库`pillow-simd`,它支持中文字符集。
示例代码:
```
from PIL import Image, ImageDraw
from PIL import ImageFont
# 创建画布
image = Image.new('RGB', (200, 100), (255, 255, 255))
# 创建绘制对象
draw = ImageDraw.Draw(image)
# 加载中文字体
font = ImageFont.truetype("simhei.ttf", 24, encoding="utf-8")
# 绘制中文
draw.text((50, 50), '你好,世界!', font=font, fill=(0, 0, 0))
# 保存图片
image.save('chinese.png')
```
在上面的代码中,我们加载了`simhei.ttf`中文字体,并指定了编码为`utf-8`,然后就可以正常绘制中文了。
阅读全文