【发布时间】:2011-08-10 13:49:30
【问题描述】:
即:打开记事本,字体选为“Arial, Size 11”,仔细输入“这只是一个测试”字样,截图:
输入并运行以下Python代码:
import ImageFont, ImageDraw, Image
im = Image.open("c:/textimg.png") #the above image
pilfont = ImageFont.truetype("arial.ttf", 11)
compimg = Image.new("RGB", im.size, (255, 255, 255))
draw = ImageDraw.Draw(compimg)
draw.text((0,0), "this is just a test", (0,0,0), font=pilfont)
compimg.save("c:/compimg.png")
然而结果却令人失望:
不仅尺寸不对,而且还有些阴影,而记事本的渲染清晰且不跨越像素边界。
我怎样才能让它像记事本一样呈现?我在 pygame 上也遇到过这个确切的问题,所以我认为我在这里缺少对 TTF 的一些基本了解。
更新:我再次尝试使用 pygame。它做同样的事情。它确实有一个关闭抗锯齿的选项,但看起来它只是切断了它根据某个阈值进行抗锯齿的任何像素。我得到的最接近的近似值是使用 15 号。代码是:
pygfont = pygame.font.Font(r"c:\windows\fonts\arial.ttf", 15)
surf = pygfont.render("this is just a test", False, (0,0,0), (255,255,255))
pygame.image.save(surf, r"c:\pygameimg.png")
和结果(上面是记事本原件以供比较):
KILL ME http://tinypic.com/images/404.gif
哎呀,为什么我不能马上提供赏金呢?
更新:这里比较所有方法:
PIL 15,然后记事本 11,然后 pygame 15 抗锯齿关闭,然后 pygame 15 抗锯齿打开。
PIL 15 实际上具有正确的比例,它只是抗锯齿。所以:为什么是 15 对 11?如何让它像windows一样做呢? (而 wtf 是 pygame 在做什么?)
【问题讨论】:
-
这里的图片掉了,能更新一下链接吗?
标签: python fonts font-face font-size truetype