Change saturation with Imagekit, PIL or Pillow?

antonagestam picture antonagestam · Apr 17, 2013 · Viewed 12.8k times · Source

How do I go about changing the saturation of an image using PIL or Pillow? Preferably I'd like to be able to use the solution together with the django-imagekit package. The reason I need to change the saturation is to create an effect where when the user hovers a black-and-white image it turns to colored.

Answer

abarnert picture abarnert · Apr 17, 2013

You probably want ImageEnhance.Color.

img = PIL.Image.open('bus.png')
converter = PIL.ImageEnhance.Color(img)
img2 = converter.enhance(0.5)

This gives an image with half the "color" of the original. This isn't exactly the same thing as half the saturation (because half or double the saturation would usually underflow or overflow), but it's probably what you actually want most of the time. As the docs say, it works like the "color" knob on a TV.

Here's an example of the same image at 0.5, 1.0, and 2.0 color: enter image description here enter image description here enter image description here