当前位置: 首页 > 面试题库 >

PIL cuts off top of letters

舒俊雄
2023-03-14
问题内容

我花了很多时间用Python制作了我的第一个web应用程序,我很高兴
使用[pil](file:///C:/questions/taged/pil“show questions taged’pil’”进行
生成图像。在读了很多书之后,我成功地实现了正确的文本
对齐、包装、生成具有许多扩展名的文件等。
但是,由PIL生成的所有文本在顶部被截断。这是一个样本。
!【PIL生成的图像示例,其中文本在
顶部
它应该在各种字体中显示“jygpq”(字体名称在屏幕上)
左)。
我在这里发现了一些帖子:[字体剪辑与
pil,但是
我想避免使用另一个模块(aggdraw);因为我已经明白了
PIL已经有很多东西了,我想坚持下去。
我试过很多不同大小的字体,但文字还是被切断了。我甚至
尝试使用PIL字体,但仍然不起作用。[还将OTF转换为
BDF和PIL]。
这是在Ubuntu上。我下一步该怎么做?


问题答案:

我希望在这一点上是错误的,但唯一正确的修复依赖于修补
如何\u imagingft.c呈现文本。PIL依赖于FreeType来完成这个任务,但是
皮尔似乎在错误地计算位置。另外,高度在getsize
被高估了(尽管这不会引起问题)。现在,我已经
在以下位置放置修补程序以处理这些问题:http://pastebin.com/jP2iLkDN(在那里)
似乎是修补渲染代码的更好方法)。下面是我在没有补丁和

下面是生成顶部数字的代码:

# -*- encoding: utf8 -*-
import sys
import Image, ImageDraw, ImageFont

im = Image.new("RGBA", (1000, 1000), 'white')
draw = ImageDraw.Draw(im)

start_y = 7
text = u'\u00d1\u00d3yŻ\u00d4Ćgp\u010c\u0137'
for i in xrange(28, 46, 2):
    font = ImageFont.truetype('Junicode-Bold.ttf', i)
    width, height = font.getsize(text)
    draw.rectangle((0, start_y, width, height + start_y), outline='blue')
    draw.text((0, start_y), text, font=font, fill='black')
    start_y += height + 7

im.crop((0, 0, width + 1, start_y + 2)).save(sys.argv[1])

下面的数字是根据链接列表中的代码生成的
关于截取部分课文的话题。



 类似资料:

相关阅读

相关文章

相关问答