diff options
| author | Rangi <remy.oukaour+rangi42@gmail.com> | 2022-09-18 23:25:22 -0400 |
|---|---|---|
| committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2022-09-18 23:25:22 -0400 |
| commit | 208ea072375937c7258b4841a23185e82fb563b1 (patch) | |
| tree | 28b101f9e3d5e5f9d9348e178bde70735af29405 /tools/rgb555.py | |
| parent | Distinguish Elite 4 "meta" constants from event constants (diff) | |
| download | pokeyellow-208ea072375937c7258b4841a23185e82fb563b1.tar.gz pokeyellow-208ea072375937c7258b4841a23185e82fb563b1.tar.xz pokeyellow-208ea072375937c7258b4841a23185e82fb563b1.zip | |
Update and add more tool scripts
Diffstat (limited to 'tools/rgb555.py')
| -rwxr-xr-x | tools/rgb555.py | 38 |
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() |
