From e2c4fd45a98b4414da59e43ade2efa631132d36b Mon Sep 17 00:00:00 2001
From: Elliu <elliu@hashi.re>
Date: Sun, 18 Jun 2023 11:26:55 +0200
Subject: [PATCH] Support imgBase and bgCol

---
 adacher.py | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/adacher.py b/adacher.py
index ffc34bd..d3574f5 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)
-- 
GitLab