Skip to content
Extraits de code Groupes Projets
Valider bfccd1a6 rédigé par Elliu's avatar Elliu
Parcourir les fichiers

Initial commit

parent
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
#!/usr/bin/python3
import argparse
import math
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
parser = argparse.ArgumentParser(
prog='Adacher',
description='Generate beautiful adachers')
parser.add_argument('text')
parser.add_argument('--nobox', action='store_true', default=False)
parser.add_argument('--boxtop', type=float, default=0.65)
parser.add_argument('--boxheight', type=float, default=0.20)
args = parser.parse_args()
withBox = not args.nobox
print(withBox)
def get_offset_for_true_mm(text, draw, font):
anchor_bbox = draw.textbbox((0, 0), text, font=font, anchor='lt')
anchor_center = (anchor_bbox[0] + anchor_bbox[2]) // 2, (anchor_bbox[1] + anchor_bbox[3]) // 2
mask_bbox = font.getmask(text).getbbox()
mask_center = (mask_bbox[0] + mask_bbox[2]) // 2, (mask_bbox[1] + mask_bbox[3]) // 2
return anchor_center[0] - mask_center[0], anchor_center[1] - mask_center[1]
img = Image.open("/home/elliu/Pictures/Adachi_white.png")
width,height = img.size
args.boxbot = args.boxtop + args.boxheight
if args.boxbot != 1:
args.boxbot = args.boxtop + args.boxheight
tmp = Image.new("RGB", (width, math.floor(height*args.boxbot)))
tmp.paste(img, (0,0))
img = tmp
draw = ImageDraw.Draw(img)
draw.rectangle([0, args.boxtop*height, width, (args.boxtop + args.boxheight)*height], (255,255,255))
fontsize = 1
img_fraction = 0.20
fontPath = "/home/elliu/Downloads/fonts/COMIC.TTF"
font = ImageFont.truetype(fontPath, fontsize)
while font.getsize(args.text)[0] < img_fraction*img.size[0]:
# iterate until the text size is just larger than the criteria
fontsize += 1
font = ImageFont.truetype(fontPath, fontsize)
font = ImageFont.truetype(fontPath, fontsize)
offset = get_offset_for_true_mm(args.text, draw, font)
draw.text(((1 - img_fraction)*width/2 + offset[0], height/2 + offset[1]), args.text, (255,0,0), font=font)
img.save('sample-out.png')
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter