1.1 --- a/optimiser.py Thu Oct 01 02:13:26 2015 +0200
1.2 +++ b/optimiser.py Thu Oct 01 02:24:13 2015 +0200
1.3 @@ -68,11 +68,11 @@
1.4 def sign(x):
1.5 return x >= 0 and 1 or -1
1.6
1.7 -def saturate(rgb):
1.8 - return tuple(map(saturate_value, rgb))
1.9 +def saturate_rgb(rgb, exp):
1.10 + return tuple([saturate_value(x, exp) for x in rgb])
1.11
1.12 -def saturate_value(x):
1.13 - return 127.5 + sign(x - 127.5) * 127.5 * math.sqrt(abs(x - 127.5) / 127.5)
1.14 +def saturate_value(x, exp):
1.15 + return 127.5 + sign(x - 127.5) * 127.5 * pow(abs(x - 127.5) / 127.5, exp)
1.16
1.17 def test():
1.18 size = 512
1.19 @@ -118,6 +118,7 @@
1.20 input_filename, output_filename = sys.argv[1:3]
1.21 rotate = "-r" in sys.argv[3:]
1.22 saturate = "-s" in sys.argv[3:]
1.23 + desaturate = "-d" in sys.argv[3:]
1.24
1.25 x = EXIF.process_file(open(input_filename))
1.26 im = PIL.Image.open(input_filename)
1.27 @@ -131,8 +132,8 @@
1.28 c = {}
1.29 for x in range(0, width):
1.30 rgb = im.getpixel((x, y))
1.31 - if saturate:
1.32 - rgb = saturate(rgb)
1.33 + if saturate or desaturate:
1.34 + rgb = saturate_rgb(rgb, saturate and 0.5 or 2)
1.35 value = get_value((x, y), rgb, width, height)
1.36 im.putpixel((x, y), value)
1.37 if not c.has_key(value):