["python","python-imaging-library"]
Center-/middle-align text with PIL?

How would I center-align (and middle-vertical-align) text when using PIL?
Deprecation Warning: textsize is deprecated and will be removed in Pillow 10 (2023-07-01). Use textbbox or textlength instead. Code using textbbox instead of textsize. from PIL import Image, ImageDraw, ImageFont def create_image(size, bgColor, message, font, fontColor): W, H = size image = Image.new('RGB', size, bgColor) draw = ImageDraw.Draw(image) _, _, w, h = draw.textbbox((0, 0), message, font=font) draw.text(((W-w)/2, (H-h)/2), message, font=font, fill=fontColor) return image myFont = ImageFont.truetype('Roboto-Regular.ttf', 16) myMessage = 'Hello World' myImage = create_image((300, 200), 'yellow', myMessage, myFont, 'black') myImage.save('hello_world.png', "PNG") Result Use Draw.textsize method to calculate text size and re-calculate position accordingly. Here is an example: from PIL import Image, ImageDraw W, H = (300,200) msg = "hello" im = Image.new("RGBA",(W,H),"yellow") draw = ImageDraw.Draw(im) w, h = draw.textsize(msg) draw.text(((W-w)/2,(H-h)/2), msg, fill="black") im.save("hello.png", "PNG") and the result: If your fontsize is different, include the font like this: myFont = ImageFont.truetype("my-font.ttf", 16) draw.textsize(msg, font=myFont)