我在一个游戏中发现了一个脚本,它肯定使用了Microsoft YaHei字体(当我将在游戏文件夹中找到的字体文件替换为我自己的字体文件时,脚本字体也会更改):
但是,即使更改了“大小”和“位置”参数,渲染结果也总是有点不同
from PIL import Image, ImageDraw, ImageFont
import numpy as np
i = 12
text = '我是王中王'
font = ImageFont.truetype('mysh.ttf', i)
PIL_image = Image.new('RGB', (100, 100), color=0xffffff)
draw = ImageDraw.Draw(PIL_image)
draw.text((31, 11), text, font=font, fill=10, anchor='mm')
Image.fromarray(np.array(PIL_image)).save('out.png')
这是我正在使用的一段代码,通过更改font_size参数,最接近的结果如下:
尝试使用windows paint,获得与PIL相同的字体:
有一些细微的差别,您应该能够找到它:
我意识到位置参数可能是十进制的,但pillow text方法似乎将十进制位置参数截断为整数,将位置参数更改为十进制没有任何区别。我该怎么办
问题既不在
PIL
中,也不在您的代码中,您做得对,但请记住,在处理图像中的字体渲染时你的问题
解决方案
使用python中的Win32API使用python中的windows渲染引擎 获得几乎相同的结果或至少最接近的结果
或者尝试使用gamming库
pygame
进行实验,因为它是用来开发的 因此,它将更精确地处理字体渲染,并使用 实现可靠性的复杂方法使用Windows API
用这个
使用Pygame
要安装
pygame
,请为python2运行pip install pygame
,或为python3运行pip3 install pygame
相关问题 更多 >
编程相关推荐