[英]PIL: add a text at the bottom middle of image
我有圖像的寬度和高度。
img = Image.open(img_src)
width, height = img.size
font = ImageFont.truetype("MuseoSansCyrl_0.otf", 100)
text_w, text_h = draw.textsize(title, font)
我試圖找到一種通用的方法來在底部中間的圖像中添加文本。
這是我寫的函數:
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
有什么辦法可以獲得 REQ_WIDTH 和 REQ_HEIGHT 嗎?
您已經調用了draw.textsize
,它會返回最終文本將具有的寬度和高度 - 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)
(請注意, draw.text
包括一個可選的“錨”的說法-但它可能值不記錄,也不是文檔狀態,無論是實際實現如果實現了,並且有代表(horizontal_center,底部的值。 ) 作為 Anchor,您應該只需要傳遞 image_width / 2 和 image_height,而無需調用draw.textsize
)
所需變量的名稱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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.