当前位置:  开发笔记 > 编程语言 > 正文

Python图像库 - 字体定位

如何解决《Python图像库-字体定位》经验,为你挑选了1个好方法。

编辑:添加完整的工作示例

我有以下程序:

from PIL import Image, ImageDraw, ImageFont

FULL_SIZE = 50
filename = 'font_test.png'
font="/usr/share/fonts/truetype/msttcorefonts/arial.ttf"
text="5"

image = Image.new("RGBA", (FULL_SIZE, FULL_SIZE), color="grey")
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(font, 40)
font_width, font_height = font.getsize(text)
draw.rectangle(((0, 0), (font_width, font_height)), fill="black")
draw.text((0, 0), text, font=font, fill="red")
image.save(filename, "PNG")

这会生成以下图像:

在此输入图像描述

似乎在编写文本时,PIL库在顶部添加了一些边距.此边距取决于我使用的字体.

如何在尝试定位文本时考虑到这一点(我希望它位于矩形的中间)?

(在Ubuntu 14.04上使用Pillow 2.3.0的Python 2.7.6)



1> Robᵩ..:

我不明白为什么,但减去font.getoffset(text)[1]y统筹修复它在我的电脑上.

from PIL import Image, ImageDraw, ImageFont

FULL_SIZE = 100
filename = 'font_posn_test.png'
fontname = '/usr/share/fonts/truetype/msttcorefonts/arial.ttf'
textsize = 40
text = "5"

image = Image.new("RGBA", (FULL_SIZE, FULL_SIZE))
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(fontname, textsize)
print font.getoffset(text)
print font.font.getsize(text)
font_width, font_height = font.getsize(text)

font_y_offset = font.getoffset(text)[1] # <<<< MAGIC!

draw.rectangle(((0, 0), (font_width, font_height)), fill="black")
draw.text((0, 0 - font_y_offset), text, font=font, fill="red")
image.save(filename, "PNG")

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有