python-3.x - 如何使用 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
推荐阅读
- python - 横向打印姓名两次
- javascript - Axios 使用基本身份验证禁用用户名和密码提示
- excel - Excel日期格式问题
- python - Python如何通过引用将字符串传递给函数
- python - Python & Pandas:将多行组合成单个单元格
- algorithm - 美丽片段的最大长度
- python - 无法获取按钮的 id(Kivy 和 Python)
- javascript - 我可以使用自定义样式在@react-google-maps/api 上加载消息吗
- material-ui - 使用 MUI Slider 将步骤映射到超过 100 的线性比例
- jdbc - JBoss connecting to SQL Server: Certificates do not conform to algorithm constraints