2024-10-04 11:36:08 发布
网友
我有图像的宽度和高度。在
img = Image.open(img_src) width, height = img.size font = ImageFont.truetype("MuseoSansCyrl_0.otf", 100) text_w, text_h = draw.textsize(title, font)
我想在中间添加一个通用的文本。在
下面是我写的函数:
有什么方法可以得到所需宽度和所需高度吗?在
所需变量的名称-REQ_WIDTH和REQ_HEIGHT-有点误导,因为它们不是宽度和高度。在
REQ_WIDTH
REQ_HEIGHT
你只需要做一点数学运算:
X_POS = h - text_h Y_POS = w//2 - text_w//2 # or (w - text_w) // 2 draw.text((X_POS, Y_POS), title, (255,255,255), font=font)
您已经调用了draw.textsize,它将返回最终文本的宽度和高度-从这一点开始,您只需计算左上角来呈现文本,如下所示:
draw.textsize
顶部为图像高度-文本高度,左侧为图像宽度/2-文本宽度/2-因此,渲染调用变得简单:
draw.text(((w - text_2) // 2, h - text_h), title, (255,255,255), font=font)
(请注意,draw.text包含一个可选的“anchor”参数-但它的可能值没有记录,文档也没有说明它是否实际实现。如果实现了,并且有一个表示(水平中心,底部)的值作为锚定,则只需传递image_width/2和image_height,而不需要调用draw.textsize)
draw.text
所需变量的名称-
REQ_WIDTH
和REQ_HEIGHT
-有点误导,因为它们不是宽度和高度。在你只需要做一点数学运算:
您已经调用了
draw.textsize
,它将返回最终文本的宽度和高度-从这一点开始,您只需计算左上角来呈现文本,如下所示:顶部为图像高度-文本高度,左侧为图像宽度/2-文本宽度/2-因此,渲染调用变得简单:
(请注意,
draw.text
包含一个可选的“anchor”参数-但它的可能值没有记录,文档也没有说明它是否实际实现。如果实现了,并且有一个表示(水平中心,底部)的值作为锚定,则只需传递image_width/2和image_height,而不需要调用draw.textsize
)相关问题 更多 >
编程相关推荐