From b602944f9a9057933abb1ff1c12b4deabc4883fb Mon Sep 17 00:00:00 2001 From: Pedro de Medeiros Date: Wed, 10 May 2023 06:16:01 +0000 Subject: png2sprites: allow user to change transparent colour --- tools/png2sprites.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'tools/png2sprites.py') diff --git a/tools/png2sprites.py b/tools/png2sprites.py index 95e6492..d51251f 100755 --- a/tools/png2sprites.py +++ b/tools/png2sprites.py @@ -21,6 +21,7 @@ # THE SOFTWARE. # +import re from argparse import ArgumentParser from PIL import Image @@ -29,9 +30,18 @@ __version__ = "1.0" DEF_W = 16 DEF_H = 16 +RE_COL = re.compile("^#?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$") TRANS = (28, 28, 28) +def to_color_tuple(src): + g = RE_COL.search(src) + if g: + return int(g.group(1), 16), int(g.group(2), 16), int(g.group(3), 16) + else: + raise Exception("hexadecimal RRGGBB color expected") + + def to_hex_list_str(src): out = "" for i in range(0, len(src), 8): @@ -79,6 +89,14 @@ def main(): action="store_true", help="include frame color as a comment", ) + parser.add_argument( + "-t", + "--transparent", + dest="trans_color", + type=to_color_tuple, + default="1c1c1c", + help="redefine transparent color in 6-digit hexadecimal notation (default: 1c1c1c)", + ) parser.add_argument("image", help="image to convert") @@ -109,7 +127,7 @@ def main(): tile = [ data[x + i + ((y + j) * w)] for j in range(DEF_H) for i in range(DEF_W) ] - cols = sorted(set([c for c in tile if c != TRANS])) + cols = sorted(set([c for c in tile if c != args.trans_color])) if not cols: continue -- cgit v1.2.3