我如何使用PIL水平和垂直地将多行文本集中



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

感谢您的任何帮助,路易斯

框架和文本都围绕着左上角,每个偏移均以像素为中心。

值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

最新更新