首页 > 解决方案 > 如何使用 PIL 将多行文本水平和垂直居中

问题描述

正如标题所说,我想使用 PIL 将多行文本居中到创建的图像上。我已经使用了这个代码 - https://stackoverflow.com/a/1970942/7286028但它只使用中间垂直对齐。但是,我想要垂直和水平对齐。这应该很容易,但由于填充像素和其他因素而变得复杂。

感谢您的帮助,路易斯

标签: python-3.xpython-imaging-library

解决方案


框架和文本都以左上角为中心,每个偏移量以像素为单位。

W 值是框架的宽度,H 是框架的高度。

w 是文本的宽度,h 是文本的高度。

左上方:draw.text((0, 0), msg, fill="black")

右上:draw.text((W-w, 0), msg, fill="black")

左下方:draw.text((0, H-h), msg, fill="black")

右下:draw.text((W-w, H-h), msg, fill="black")

然后,您可以使用这个想法让文本在中间使用这种方法(在链接的讨论中看到)有一小部分距离:

draw.text(((W-w)/2, (H-h)/2), msg, fill="black")

最后添加一定数量的像素的填充可以通过从代码中添加/减去一个整数来完成:

draw.text((((W-w)/2)-50, ((H-h)/2)-50), msg, fill="black")

Github 链接:https ://github.com/Oliver-Tafe/StackOverflow/blob/master/PillowTextAlign.py


推荐阅读