I fount this code off of the PIL API(here is the link: https://pillow.readthedocs.io/en/stable/handbook/text-anchors.html) and I wanted to also shrink it depending on the size of the text while it is centered.
here is the anchoring code
from PIL import Image, ImageDraw, ImageFont
font = ImageFont.truetype("mont.ttf", 48)
im = Image.new("RGB", (200, 200), "white")
d = ImageDraw.Draw(im)
d.text((100, 100), "Quick", fill="black", anchor="ms", font=font)
im.save('text.png')
And the outcome looks like this:
But if you increase the word size it looks like this:
So I just want the text to be centered and shrunk to fit the image
No detail about the requirements, so here only for result image with fixed size (200, 200), so font size will be changed.
ImageDraw.textsize
ImageDraw.text
Image.resize
Image.paste
from PIL import Image, ImageDraw, ImageFont
def text_to_image(text, filename='text.png', border=20):
im = Image.new("RGB", (1, 1), "white")
font = ImageFont.truetype("calibri.ttf", 48)
draw = ImageDraw.Draw(im)
size = draw.textsize(text, font=font)
width = max(size)
im = Image.new("RGB", (width, width), "white")
draw = ImageDraw.Draw(im)
draw.text((width//2, width//2), text, anchor='mm', fill="black", font=font)
im = im.resize((200-2*border, 200-2*border), resample=Image.LANCZOS)
new_im = Image.new("RGB", (200, 200), "white")
new_im.paste(im, (border, border))
new_im.show()
# new_im.save(filename)
text_to_image("Hello World")