aboutsummaryrefslogtreecommitdiffstats
path: root/tools/rgb555.py
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2022-09-19 00:41:13 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2022-09-19 00:41:13 -0400
commitf7aea30ee8b9d1616b39defc6fb64b1c53886805 (patch)
treedee31d564ad2c2a600186fb5a6068806e0775af8 /tools/rgb555.py
parentMerge branch 'master' of https://github.com/pret/pokered (diff)
parentFix tools/unnamed.py and add tools/consts.py (diff)
downloadpokeyellow-f7aea30ee8b9d1616b39defc6fb64b1c53886805.tar.gz
pokeyellow-f7aea30ee8b9d1616b39defc6fb64b1c53886805.tar.xz
pokeyellow-f7aea30ee8b9d1616b39defc6fb64b1c53886805.zip
Merge remote-tracking branch 'remotes/pokered/master'
Diffstat (limited to 'tools/rgb555.py')
-rwxr-xr-xtools/rgb555.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/tools/rgb555.py b/tools/rgb555.py
new file mode 100755
index 00000000..bf650313
--- /dev/null
+++ b/tools/rgb555.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+"""
+Usage: python rgb555.py image.png
+
+Round all colors of the input image to RGB555.
+"""
+
+import sys
+
+import png
+
+def rgb8_to_rgb5(c):
+ return (c & 0b11111000) | (c >> 5)
+
+def round_pal(filename):
+ with open(filename, 'rb') as file:
+ width, height, rows = png.Reader(file).asRGBA8()[:3]
+ rows = list(rows)
+ for row in rows:
+ del row[3::4]
+ rows = [[rgb8_to_rgb5(c) for c in row] for row in rows]
+ writer = png.Writer(width, height, greyscale=False, bitdepth=8, compression=9)
+ with open(filename, 'wb') as file:
+ writer.write(file, rows)
+
+def main():
+ if len(sys.argv) < 2:
+ print(f'Usage: {sys.argv[0]} pic.png', file=sys.stderr)
+ sys.exit(1)
+ for filename in sys.argv[1:]:
+ if not filename.lower().endswith('.png'):
+ print(f'{filename} is not a .png file!', file=sys.stderr)
+ round_pal(filename)
+
+if __name__ == '__main__':
+ main()