diff --git a/adacher.py b/adacher.py index ffc34bd7865daadd674f36fe32ee5f54c0e70feb..d3574f570cde64333607997b128af5a535f1ac74 100755 --- a/adacher.py +++ b/adacher.py @@ -3,6 +3,7 @@ import argparse import math import tempfile +import sys from PIL import Image from PIL import ImageFont @@ -14,7 +15,7 @@ parser = argparse.ArgumentParser( description='Generate beautiful adachers') parser.add_argument('text') -parser.add_argument('--imgBase', type=str, default="adachi_white.png") +parser.add_argument('--imgBase', type=str, default="adachi") parser.add_argument('--nobox', action='store_true', default=False) parser.add_argument('--nowrap', action='store_true', default=False) parser.add_argument('--boxtop', type=float, default=0.65) @@ -24,12 +25,23 @@ parser.add_argument('--textHoriMargin', type=int, default=10) parser.add_argument('--fontPath', type=str, default="comic.ttf") parser.add_argument('--textCol', type=str, default="ff0000") parser.add_argument('--boxCol', type=str, default="ffffff") +parser.add_argument('--bgCol', type=str, default="ffffff") parser.add_argument('--align', type=str, default="center") args = parser.parse_args() -args.imgBase = "adachi_white.png" args.fontPath = "comic.ttf" +imgBases = { + "adachi": "adachi_white.png", + "adacher": "adacher.png" +} + +if (args.imgBase in imgBases): + args.imgBase = imgBases[args.imgBase] +else: + print("Wrong base image") + sys.exit(1) + withBox = not args.nobox withWrap = not args.nowrap @@ -37,6 +49,7 @@ def hexToCol(st): return tuple(int(st[i:i+2], 16) for i in (0, 2, 4)) textCol = hexToCol(args.textCol) boxCol = hexToCol(args.boxCol) +bgCol = hexToCol(args.bgCol) ##### Function to calculate font size and line breaks @@ -89,21 +102,19 @@ def growFontToBox(draw, fontPath, text, width, height, wrap=False): return newText, newSize - -img = Image.open(args.imgBase) -width,height = img.size - +imgBase = Image.open(args.imgBase) ##### Add white box -boxTop = args.boxtop * img.size[1] -boxHeight = args.boxheight * img.size[1] +boxTop = args.boxtop * imgBase.size[1] +boxHeight = args.boxheight * imgBase.size[1] boxBot = math.floor(boxTop + boxHeight) -if args.boxtop + args.boxheight != 1: - tmp = Image.new("RGB", (width, boxBot)) - tmp.paste(img, (0,0)) - img = tmp + +img = Image.new("RGBA", (imgBase.size[0], boxBot)) +width,height = img.size draw = ImageDraw.Draw(img) +draw.rectangle([0, 0, width, boxBot], bgCol) +img.alpha_composite(imgBase) draw.rectangle([0, boxTop, width, boxBot], boxCol) newText, fontsize = growFontToBox(draw, args.fontPath, args.text, img.size[0] - 2*args.textHoriMargin, boxHeight - 2*args.textVertMargin, withWrap)