"""Porte em Python do src/map-to-js.php de suve/LD42 (AGPL-3.0, Artur "suve" Iwicki): converte um mapa em PNG num array JavaScript de tiles, com a mesma saida do script PHP. python3 -I map-to-js.py (escreve o JavaScript na saida padrao) """ import os, re, sys from PIL import Image TILES = { '00C0FF': 0, '00C000': 1, '7B2910': 2, '7F7F7F': 3, 'FF8080': 4, 'FFFF00': -1, 'FFFFFF': -2, '0000C4': -40, '0000FF': -41, 'FF0000': -50, 'DD0000': -51, 'FF00FF': -52, 'DD00DD': -53, } path = sys.argv[1] img = Image.open(path).convert('RGB') w, h = img.size rows = [] for y in range(h): row = [] for x in range(w): r, g, b = img.getpixel((x, y)) hx = '%02X%02X%02X' % (r, g, b) if hx not in TILES: sys.exit('map-to-js.py: cor desconhecida %s em %s' % (hx, path)) row.append(TILES[hx]) rows.append(row) name = os.path.basename(path) name = re.sub(r'\..*$', '', name) name = re.sub(r'[^a-zA-Z0-9_]', '_', name) name = re.sub(r'^[^a-zA-Z_]*', '', name) name += '_mapdata' out = 'var %s = [\n' % name for row in rows: out += '\t[' + ', '.join(str(t) for t in row) + '],\n' out += '];\n' sys.stdout.write(out)