如何将非抗锯齿字体渲染到内部图像?

Posted

技术标签:

【中文标题】如何将非抗锯齿字体渲染到内部图像?【英文标题】:How to render non-anti-aliased font to internal image? 【发布时间】:2011-08-10 12:04:37 【问题描述】:

使用 Python 将非抗锯齿字体(例如 ttf 字体)渲染到内部图像(例如 PIL.Image,即我不需要显示它)的最快速和准确的方法是什么?我说准确是因为我不久前用 pygame 尝试过,我给它的大小渲染的字体与 Word 或 Paint 中渲染的窗口不匹配。

【问题讨论】:

【参考方案1】:

Python Imaging Library (PIL) 可以将文本呈现为图像——我不知道它是不准确的,但我还没有完全测试它...

来自预先存在的问题的示例:

from PIL import Image
from PIL import ImageFont, ImageDraw

image = Image.new("RGBA", (288,432), (255,255,255))
usr_font = ImageFont.truetype("resources/HelveticaNeueLight.ttf", 25)
d_usr = ImageDraw.Draw(image)
d_usr.fontmode = "1" # this apparently sets (anti)aliasing.  See link below.
d_usr.text((105,280), "MYTEXT",(0,0,0), font=usr_font)

另见:

http://www.pythonware.com/products/pil/

http://mail.python.org/pipermail/image-sig/2005-August/003497.html

Python Imaging Library - Text rendering

【讨论】:

啊这个不准确正是我的意思。但我已经发布了另一个关于它的问题here。 啊,这实际上将其呈现为抗锯齿,我希望它不是。关于如何做到这一点的任何提示? @Claudiu 根据此页面编辑了答案:mail.python.org/pipermail/image-sig/2005-August/003497.html 不错!这确实使它没有抗锯齿。它仍然与记事本不同,所以 =( 对我来说,但从我问的另一个问题来看,没有办法让 PIL 做到这一点【参考方案2】:

啊this is how it's done... 应该呈现与 windows at is 使用其算法相同的渲染。

【讨论】:

以上是关于如何将非抗锯齿字体渲染到内部图像?的主要内容,如果未能解决你的问题,请参考以下文章

字体渲染技术(字体抗锯齿技术) -webkit-font-smoothing: antialiased;

使 Windows 上的字体像 Mac/Linux 一样渲染:禁用字体提示和/或在客户端处理抗锯齿

WinRT 和软件 ClearType 字体渲染

如何使用 webdriver (Java) 在 phantomjs 上禁用字体抗锯齿?

基于SDF渲染字体

画布的 drawImage() 不进行亚像素渲染/抗锯齿是不是有技术原因?