2015-10-02 | Paul Boddie | file changeset files shortlog | Added experiments with PIL's dithering/quantizing, summing colour probabilities, finding the "best" combinations where more than four colours are required. Removed the preview image saving. |
paul@29 | 1 | #!/usr/bin/env python |
paul@29 | 2 | |
paul@29 | 3 | import PIL.Image |
paul@29 | 4 | import sys |
paul@29 | 5 | |
paul@29 | 6 | def get_palette(): |
paul@29 | 7 | l = [] |
paul@29 | 8 | for i in range(0, 8): |
paul@29 | 9 | r = ((i / 4) % 2) * 255; g = ((i / 2) % 2) * 255; b = (i % 2) * 255 |
paul@29 | 10 | for j in range(0, 32): |
paul@29 | 11 | l.extend((r, g, b)) |
paul@29 | 12 | |
paul@29 | 13 | imp = PIL.Image.new("P", (1, 1)) |
paul@29 | 14 | imp.putpalette(l) |
paul@29 | 15 | return imp |
paul@29 | 16 | |
paul@29 | 17 | def dither(im, imp=None): |
paul@29 | 18 | return im.quantize(palette=imp or get_palette()) |
paul@29 | 19 | |
paul@29 | 20 | im = PIL.Image.open(sys.argv[1]) |
paul@29 | 21 | im2 = dither(im) |
paul@29 | 22 | im2.save(sys.argv[2]) |
paul@29 | 23 | |
paul@29 | 24 | # vim: tabstop=4 expandtab shiftwidth=4 |