Comment faire pour aligner le centre (et le milieu de l'alignement vertical) du texte lors de l'utilisation de PIL ?
Réponse
Trop de publicités?
unutbu
Points
222216
Voici un exemple de code qui utilise le textwrap pour diviser une longue ligne en morceaux, puis utilise la méthode textsize
pour calculer les positions.
from PIL import Image, ImageDraw, ImageFont
import textwrap
astr = '''The rain in Spain falls mainly on the plains.'''
para = textwrap.wrap(astr, width=15)
MAX_W, MAX_H = 200, 200
im = Image.new('RGB', (MAX_W, MAX_H), (0, 0, 0, 0))
draw = ImageDraw.Draw(im)
font = ImageFont.truetype(
'/usr/share/fonts/truetype/msttcorefonts/Arial.ttf', 18)
current_h, pad = 50, 10
for line in para:
w, h = draw.textsize(line, font=font)
draw.text(((MAX_W - w) / 2, current_h), line, font=font)
current_h += h + pad
im.save('test.png')