# HG changeset patch # User Paul Boddie # Date 1444487948 -7200 # Node ID 74063085e8ebf821515c5ec0b1342139e29899dd # Parent 3081e03b8d951a29b2b2da25307f8b4c28ef8eac Moved initial image processing to the extension module. diff -r 3081e03b8d95 -r 74063085e8eb optimiser.py --- a/optimiser.py Sat Oct 10 16:13:09 2015 +0200 +++ b/optimiser.py Sat Oct 10 16:39:08 2015 +0200 @@ -72,28 +72,6 @@ return im.resize((width, height)) -def process_image(pim, saturate, desaturate, darken, brighten): - - """ - Process image 'pim' using the given options: 'saturate', 'desaturate', - 'darken', 'brighten'. - """ - - width, height = pim.size - im = SimpleImage(list(pim.getdata()), pim.size) - - if saturate or desaturate or darken or brighten: - for y in range(0, height): - for x in range(0, width): - rgb = im.getpixel((x, y)) - if saturate or desaturate: - rgb = saturate_rgb(rgb, saturate and 0.5 / saturate or 2 * desaturate) - if darken or brighten: - rgb = amplify_rgb(rgb, brighten and 0.5 / brighten or 2 * darken) - im.putpixel((x, y), rgb) - - pim.putdata(im.getdata()) - def preview_image(pim, half_resolution_preview=False): "Return a preview copy of image 'pim'." @@ -234,7 +212,9 @@ im = PIL.Image.open(input_filename).convert("RGB") im = rotate_and_scale(exif, im, width, height, rotate) - process_image(im, saturate, desaturate, darken, brighten) + sim = SimpleImage(list(im.getdata()), im.size) + process_image(sim, saturate, desaturate, darken, brighten) + im.putdata(sim.getdata()) # Generate a preview if requested. @@ -253,6 +233,7 @@ if no_normal_output: im = PIL.Image.open(output_filename).convert("RGB") + im = SimpleImage(list(im.getdata()), im.size) result = count_colours(im, 4) if result is not None: y, colours = result diff -r 3081e03b8d95 -r 74063085e8eb optimiserlib.py --- a/optimiserlib.py Sat Oct 10 16:13:09 2015 +0200 +++ b/optimiserlib.py Sat Oct 10 16:39:08 2015 +0200 @@ -230,6 +230,25 @@ return (y, l) return None +def process_image(im, saturate, desaturate, darken, brighten): + + """ + Process image 'im' using the given options: 'saturate', 'desaturate', + 'darken', 'brighten'. + """ + + width, height = im.size + + if saturate or desaturate or darken or brighten: + for y in range(0, height): + for x in range(0, width): + rgb = im.getpixel((x, y)) + if saturate or desaturate: + rgb = saturate_rgb(rgb, saturate and 0.5 / saturate or 2 * desaturate) + if darken or brighten: + rgb = amplify_rgb(rgb, brighten and 0.5 / brighten or 2 * darken) + im.putpixel((x, y), rgb) + class SimpleImage: "An image behaving like PIL.Image." @@ -274,4 +293,6 @@ get_colours(im, 0) == [(1.0, (0, 0, 0))] count_colours(im, 4) + process_image(im, 1.0, 0.0, 1.0, 0.0) + # vim: tabstop=4 expandtab shiftwidth=4