scripts/palettes.py
scripts/palettes.pyBrowse 7 files
3,489 tokens
7,455 bytes
Token encoding: o200k_base
Snapshot 24fd22b
← Back to SKILL.md
1"""Named RGB palettes for pixel_art() and pixel_art_video().2 3Palette RGB values sourced from pixel-art-studio (MIT License)4https://github.com/Synero/pixel-art-studio — see ATTRIBUTION.md.5"""6 7PALETTES = {8 # ── Hardware palettes ───────────────────────────────────────────────9 "NES": [10 (0, 0, 0), (124, 124, 124), (0, 0, 252), (0, 0, 188), (68, 40, 188),11 (148, 0, 132), (168, 0, 32), (168, 16, 0), (136, 20, 0), (0, 116, 0),12 (0, 148, 0), (0, 120, 0), (0, 88, 0), (0, 64, 88), (188, 188, 188),13 (0, 120, 248), (0, 88, 248), (104, 68, 252), (216, 0, 204), (228, 0, 88),14 (248, 56, 0), (228, 92, 16), (172, 124, 0), (0, 184, 0), (0, 168, 0),15 (0, 168, 68), (0, 136, 136), (248, 248, 248), (60, 188, 252),16 (104, 136, 252), (152, 120, 248), (248, 120, 248), (248, 88, 152),17 (248, 120, 88), (252, 160, 68), (248, 184, 0), (184, 248, 24),18 (88, 216, 84), (88, 248, 152), (0, 232, 216), (120, 120, 120),19 (252, 252, 252), (164, 228, 252), (184, 184, 248), (216, 184, 248),20 (248, 184, 248), (248, 164, 192), (240, 208, 176), (252, 224, 168),21 (248, 216, 120), (216, 248, 120), (184, 248, 184), (184, 248, 216),22 (0, 252, 252), (216, 216, 216),23 ],24 "C64": [25 (0, 0, 0), (255, 255, 255), (161, 77, 67), (106, 191, 199),26 (161, 87, 164), (92, 172, 95), (64, 64, 223), (191, 206, 137),27 (161, 104, 60), (108, 80, 21), (203, 126, 117), (98, 98, 98),28 (137, 137, 137), (154, 226, 155), (124, 124, 255), (173, 173, 173),29 ],30 "COMMODORE_64": [31 (0, 0, 0), (255, 255, 255), (161, 77, 67), (106, 192, 200),32 (161, 87, 165), (92, 172, 95), (64, 68, 227), (203, 214, 137),33 (163, 104, 58), (110, 84, 11), (204, 127, 118), (99, 99, 99),34 (139, 139, 139), (154, 227, 157), (139, 127, 205), (175, 175, 175),35 ],36 "ZX_SPECTRUM": [37 (0, 0, 0), (0, 39, 251), (252, 48, 22), (255, 63, 252),38 (0, 249, 44), (0, 252, 254), (255, 253, 51), (255, 255, 255),39 ],40 "APPLE_II_LO": [41 (0, 0, 0), (133, 59, 81), (80, 71, 137), (234, 93, 240),42 (0, 104, 82), (146, 146, 146), (0, 168, 241), (202, 195, 248),43 (81, 92, 15), (235, 127, 35), (146, 146, 146), (246, 185, 202),44 (0, 202, 41), (203, 211, 155), (155, 220, 203), (255, 255, 255),45 ],46 "APPLE_II_HI": [47 (0, 0, 0), (255, 0, 255), (0, 255, 0), (255, 255, 255),48 (0, 175, 255), (255, 80, 0),49 ],50 "GAMEBOY_ORIGINAL": [51 (0, 63, 0), (46, 115, 32), (140, 191, 10), (160, 207, 10),52 ],53 "GAMEBOY_POCKET": [54 (0, 0, 0), (85, 85, 85), (170, 170, 170), (255, 255, 255),55 ],56 "GAMEBOY_VIRTUALBOY": [57 (239, 0, 0), (164, 0, 0), (85, 0, 0), (0, 0, 0),58 ],59 "PICO_8": [60 (0, 0, 0), (29, 43, 83), (126, 37, 83), (0, 135, 81), (171, 82, 54),61 (95, 87, 79), (194, 195, 199), (255, 241, 232), (255, 0, 77),62 (255, 163, 0), (255, 236, 39), (0, 228, 54), (41, 173, 255),63 (131, 118, 156), (255, 119, 168), (255, 204, 170),64 ],65 "TELETEXT": [66 (0, 0, 0), (255, 0, 0), (0, 128, 0), (255, 255, 0),67 (0, 0, 255), (255, 0, 255), (0, 255, 255), (255, 255, 255),68 ],69 "CGA_MODE4_PAL1": [70 (0, 0, 0), (255, 255, 255), (0, 255, 255), (255, 0, 255),71 ],72 "MSX": [73 (0, 0, 0), (62, 184, 73), (116, 208, 125), (89, 85, 224),74 (128, 118, 241), (185, 94, 81), (101, 219, 239), (219, 101, 89),75 (255, 137, 125), (204, 195, 94), (222, 208, 135), (58, 162, 65),76 (183, 102, 181), (204, 204, 204), (255, 255, 255),77 ],78 "MICROSOFT_WINDOWS_16": [79 (0, 0, 0), (128, 0, 0), (0, 128, 0), (128, 128, 0), (0, 0, 128),80 (128, 0, 128), (0, 128, 128), (192, 192, 192), (128, 128, 128),81 (255, 0, 0), (0, 255, 0), (255, 255, 0), (0, 0, 255),82 (255, 0, 255), (0, 255, 255), (255, 255, 255),83 ],84 "MICROSOFT_WINDOWS_PAINT": [85 (0, 0, 0), (255, 255, 255), (123, 123, 123), (189, 189, 189),86 (123, 12, 2), (255, 37, 0), (123, 123, 2), (255, 251, 2),87 (0, 123, 2), (2, 249, 2), (0, 123, 122), (2, 253, 254),88 (2, 19, 122), (5, 50, 255), (123, 25, 122), (255, 64, 254),89 (122, 57, 2), (255, 122, 57), (123, 123, 56), (255, 252, 122),90 (2, 57, 57), (5, 250, 123), (0, 123, 255), (255, 44, 123),91 ],92 "MONO_BW": [(0, 0, 0), (255, 255, 255)],93 "MONO_AMBER": [(40, 40, 40), (255, 176, 0)],94 "MONO_GREEN": [(40, 40, 40), (51, 255, 51)],95 96 # ── Artistic palettes ───────────────────────────────────────────────97 "PASTEL_DREAM": [98 (255, 218, 233), (255, 229, 204), (255, 255, 204), (204, 255, 229),99 (204, 229, 255), (229, 204, 255), (255, 204, 229), (204, 255, 255),100 (255, 245, 220), (230, 230, 250),101 ],102 "NEON_CYBER": [103 (0, 0, 0), (255, 0, 128), (0, 255, 255), (255, 0, 255),104 (0, 255, 128), (255, 255, 0), (128, 0, 255), (255, 128, 0),105 (0, 128, 255), (255, 255, 255),106 ],107 "RETRO_WARM": [108 (62, 39, 35), (139, 69, 19), (210, 105, 30), (244, 164, 96),109 (255, 218, 185), (255, 245, 238), (178, 34, 34), (205, 92, 92),110 (255, 99, 71), (255, 160, 122),111 ],112 "OCEAN_DEEP": [113 (0, 25, 51), (0, 51, 102), (0, 76, 153), (0, 102, 178),114 (0, 128, 204), (51, 153, 204), (102, 178, 204), (153, 204, 229),115 (204, 229, 255), (229, 245, 255),116 ],117 "FOREST_MOSS": [118 (34, 51, 34), (51, 76, 51), (68, 102, 51), (85, 128, 68),119 (102, 153, 85), (136, 170, 102), (170, 196, 136), (204, 221, 170),120 (238, 238, 204), (245, 245, 220),121 ],122 "SUNSET_FIRE": [123 (51, 0, 0), (102, 0, 0), (153, 0, 0), (204, 0, 0), (255, 0, 0),124 (255, 51, 0), (255, 102, 0), (255, 153, 0), (255, 204, 0),125 (255, 255, 51),126 ],127 "ARCTIC_ICE": [128 (0, 0, 51), (0, 0, 102), (0, 51, 153), (0, 102, 153),129 (51, 153, 204), (102, 204, 255), (153, 229, 255), (204, 242, 255),130 (229, 247, 255), (255, 255, 255),131 ],132 "VINTAGE_ROSE": [133 (103, 58, 63), (137, 72, 81), (170, 91, 102), (196, 113, 122),134 (219, 139, 147), (232, 168, 175), (240, 196, 199), (245, 215, 217),135 (249, 232, 233), (255, 245, 245),136 ],137 "EARTH_CLAY": [138 (62, 39, 35), (89, 56, 47), (116, 73, 59), (143, 90, 71),139 (170, 107, 83), (197, 124, 95), (210, 155, 126), (222, 186, 160),140 (235, 217, 196), (248, 248, 232),141 ],142 "ELECTRIC_VIOLET": [143 (26, 0, 51), (51, 0, 102), (76, 0, 153), (102, 0, 204),144 (128, 0, 255), (153, 51, 255), (178, 102, 255), (204, 153, 255),145 (229, 204, 255), (245, 229, 255),146 ],147}148 149 150def build_palette_image(palette_name):151 """Build a 1x1 PIL 'P'-mode image with the named palette for Image.quantize(palette=...)."""152 from PIL import Image153 154 if palette_name not in PALETTES:155 raise ValueError(156 f"Unknown palette {palette_name!r}. "157 f"Choose from: {sorted(PALETTES)}"158 )159 flat = []160 for (r, g, b) in PALETTES[palette_name]:161 flat.extend([r, g, b])162 # Pad to 768 bytes (256 colors) as PIL requires163 while len(flat) < 768:164 flat.append(0)165 pal_img = Image.new("P", (1, 1))166 pal_img.putpalette(flat)167 return pal_img168