首页 > 解决方案 > 无法使用 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 字体编辑器,我能够删除水平空间(蓝线)。我怎样才能垂直居中? 在此处输入图像描述

结果到现在... 在此处输入图像描述

标签: pythonpython-imaging-librarycenter

解决方案


看起来您使用的字体最初包含非居中数字。所以你应该选择另一种字体,或者你可以placechar.tff在一个特殊的字体编辑器中修改你的字体。

您还可以手动计算每个符号的坐标偏移量,将它们存储到字典中并在绘制之前将其应用于您的文本。这看起来不是一个好主意,但它也会起作用。


推荐阅读