即:打开记事本,将字体选为“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")
和结果(记事本原件在上面进行比较):
Gah为什么我不能马上提供赏金?
更新:这里比较所有方法:
PIL 15,然后记事本11,然后pygame 15反别名关闭,然后pygame 15反别名开启.
PIL 15实际上具有正确的比例,它只是消除锯齿.所以:为什么15对11?如何让它像Windows一样做到这一点? (和wtf是pygame吗?)