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