Skip to content
Advertisement

Change contrast and sharpness of a Picture in Python

I’m new to coding, some my code isn’t the cleanest (as evidenced below). Is there a more efficent way to change both the sharpness and contrast with Pillow in python without having to save and open the file twice?

My horrible code:

        im = Image.open(image.jpg)
        enhancer = ImageEnhance.Contrast(im)
        im_output = enhancer.enhance(factor)
        im_output.save(image.jpg)

        im = Image.open(image.jpg)
        enhancer = ImageEnhance.Sharpness(im)
        im_output = enhancer.enhance(factor)
        im_output.save(updated image.jpg)

Advertisement

Answer

You can do it without saving to disk like this:

#!/usr/bin/env python3
from PIL import Image, ImageEnhance                                                                

# Open a miserable, low-contrast image
im = Image.open('low-contrast.jpg')

# Sharpen 
enhancer = ImageEnhance.Sharpness(im)
res = enhancer.enhance(4) 

# Improve contrast
enhancer = ImageEnhance.Contrast(res)
res = enhancer.enhance(2)

# Save to disk
res.save('result.jpg')

Transforms this:

enter image description here

into this:

enter image description here

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement