如何使用PIL在水平和垂直方向上将多行文本居中

时间:2019-02-16 13:32:30

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

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

感谢您的帮助, 路易斯

1 个答案:

答案 0 :(得分:1)

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

值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")

然后,您可以使用这种方法(seen in the linked discussion)来将文本的距离缩短一半,例如:

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