Abh*_*bhi 5 python fonts image image-processing python-imaging-library
我有图像的宽度和高度。
img = Image.open(img_src)
width, height = img.size
font = ImageFont.truetype("MuseoSansCyrl_0.otf", 100)
text_w, text_h = draw.textsize(title, font)
Run Code Online (Sandbox Code Playgroud)
我试图找到一种通用的方法来在底部中间的图像中添加文本。
这是我写的函数:
def process_img(img_src, title, background):
img = Image.open(img_src, 'r')
draw = ImageDraw.Draw(img)
w, h = img.size
font = ImageFont.truetype("MuseoSansCyrl_0.otf", 100)
text_w, text_h = draw.textsize(title, font)
draw.text((REQ_WIDTH, REQ_HEIGHT), title, (255,255,255), font=font)
img.save(img_src)
return img_src
Run Code Online (Sandbox Code Playgroud)
有什么办法可以获得 REQ_WIDTH 和 REQ_HEIGHT 吗?
您已经调用了draw.textsize,它会返回最终文本的宽度和高度 - 从那时起,您只需计算要渲染文本的左上角,如下所示:
顶部将是您的 image_height - text_height,左侧将是您的 image_width/2 - text_width / 2 - 因此,您的渲染调用变得简单:
draw.text(((w - text_w) // 2, h - text_h), title, (255,255,255), font=font)
Run Code Online (Sandbox Code Playgroud)
(请注意,draw.text包括一个可选的“anchor”参数 - 但它的可能值没有记录,文档也没有说明它是否实际实现。如果实现了,并且有一个值表示(horizontal_center,bottom)作为锚点,您应该只需要传递 image_width / 2 和 image_height,而不需要调用draw.textsize)