python - 无法使用 Pillow 和 Python 居中字符
问题描述
我正在尝试在图像的特定位置写入字符。我正在使用 Pillow v6、Python 3.6。
这是我的代码,我逐个字符地绘制,传递我计算的左上角。
font = ImageFont.truetype('platechar.tff', 500)
def draw_single_char(img, font, val, tl): #tl = (x,y)
pil_img = Image.fromarray(np.uint8(img))
draw = ImageDraw.Draw(pil_img)
draw.text(tl, val, (0,0,0), font=font)
img = np.array(pil_img)
return img
输出没有居中,我从字体中得到了字符的宽度和高度,然后用我的左上角绘制了包围字符的矩形。字符不在矩形内居中。
字体:https ://drive.google.com/open?id=1N9rN-AgjK83U9ZDycLKxjeMP3o36vbfg
编辑使用Bidu 字体编辑器,我能够删除水平空间(蓝线)。我怎样才能垂直居中?
解决方案
看起来您使用的字体最初包含非居中数字。所以你应该选择另一种字体,或者你可以placechar.tff
在一个特殊的字体编辑器中修改你的字体。
您还可以手动计算每个符号的坐标偏移量,将它们存储到字典中并在绘制之前将其应用于您的文本。这看起来不是一个好主意,但它也会起作用。
推荐阅读
- vue.js - Vue 可以读取属性
- django - 如何防止每次启动 Docker 容器时运行我的脚本?
- object - 大型结果集的“对象已打开”错误?
- flutter - 如何在 Flutter 中截屏?
- typescript - 生成一个引用自身的 typescript 接口
- python - 如何查看我的 IDE 尝试查找包的位置?
- spring - 使用 Spring Boot 反应和 rSocket REQUEST_CHANNEL 错误
- android - 压缩图片时出现OutOfMemoryError
- git - 如何将以前的 git 提交拆分为单独的提交?
- flutter - 如何在 Flutter 的 GridView 中设置自定义 UI?