我正在尝试使用 PIL 渲染一些文本,但坦率地说,结果很糟糕。
例如,这是我在 Photoshop 中写的一些文字:
以及 PIL 的结果:
如您所见,PIL 的结果并不令人满意。也许我只是挑剔,但是有什么方法可以使用 PIL 绘制文本,从而获得更接近我的引用图像的结果?
这是我在 Python 2.7 和 PIL 1.1.7 上使用的代码
image = Image.new("RGBA", (288,432), (255,255,255))
usr_font = ImageFont.truetype("resources/HelveticaNeueLight.ttf", 25)
d_usr = ImageDraw.Draw(image)
d_usr = d_usr.text((105,280), "Travis L.",(0,0,0), font=usr_font)
最佳答案
我想出了我自己认为可以接受的解决方案。
我所做的是使文本变大,例如需要放大 3 倍,然后通过抗锯齿将其缩小,这不是 100% 完美,但它比默认值要好得多,而且不会需要 cairo 或 pango。
例如,
image = Image.new("RGBA", (600,150), (255,255,255))
draw = ImageDraw.Draw(image)
font = ImageFont.truetype("resources/HelveticaNeueLight.ttf", fontsize)
draw.text((10, 0), txt, (0,0,0), font=font)
img_resized = image.resize((188,45), Image.ANTIALIAS)
你最终得到了这个结果,
这比我以前用相同字体得到的要好得多。
关于Python 图像库 - 文本渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414639/