python输出大小不同的字体_python – 为什么我的truetype字体大小为11渲染与windows不同?...

即:打开记事本,将字体选为“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吗?)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值