ImageEnhance Module¶
Note
All source images in this document are derived from https://www.pexels.com (CC0 License).
Interface and class _Enhance¶
- doc
https://pillow.readthedocs.io/en/latest/reference/ImageEnhance.html#PIL.ImageEnhance._Enhance, http://effbot.org/imagingbook/imageenhance.htm#interface
All enhancement classes implement a common interface,
containing a single method enhance(factor)
which returns an enhanced image. So, you can always use
enhancers in the same way:
from PIL import ImageEnhance
enhancer = ImageEnhance.Color(image)
#enhancer = ImageEnhance.Sharpness(image)
# Both Color and Sharpness has same 'enhance(factor)' method.
factor = 1.0
enhancer.enhance(factor).show("Sharpness %f" % factor)
The factor is a floating point value controlling the enhancement. Factor 1.0 always returns a copy of the original image, lower factors mean less color (brightness, contrast, etc), and higher values more. There are no restrictions on this value.
Actually, enhancement classes Color,
Contrast, Brightness,
and Sharpness are derived from
class _Enhance
:
from PIL import Image, ImageFilter, ImageStat
class _Enhance(object):
def enhance(self, factor):
return Image.blend(self.degenerate, self.image, factor)
Those derived enhancement classes set self.degenerate
and self.image
, like this:
class Color(_Enhance):
def __init__(self, image):
self.image = image
self.intermediate_mode = 'L'
if 'A' in image.getbands():
self.intermediate_mode = 'LA'
self.degenerate = image.convert(self.intermediate_mode).convert(image.mode)
class _Enhance
is just implementation details (or only for implementer of custom enhancer),
but official documents of Pillow (or PIL) mentions this internal class explicitly and imcompletely,
so ignore those documents if you just want to use enhancers.
Predefined Enhancer classes¶
class Color¶
- doc
https://pillow.readthedocs.io/en/latest/reference/ImageEnhance.html#PIL.ImageEnhance.Color, http://effbot.org/imagingbook/imageenhance.htm#tag-ImageEnhance.Color
from PIL import Image, ImageEnhance
img = Image.open('data/srcimg06.jpg')
#
enhancer = ImageEnhance.Color(img)
enhancer.enhance(0.0).save(
"result/ImageEnhance_Color_000.jpg")
enhancer.enhance(0.25).save(
"result/ImageEnhance_Color_025.jpg")
enhancer.enhance(0.5).save(
"result/ImageEnhance_Color_050.jpg")
enhancer.enhance(0.75).save(
"result/ImageEnhance_Color_075.jpg")
enhancer.enhance(1.0).save(
"result/ImageEnhance_Color_100.jpg")
factor=0.0 |
factor=0.25 |
factor=0.5 |
factor=0.75 |
factor=1.0 |
class Contrast¶
- doc
https://pillow.readthedocs.io/en/latest/reference/ImageEnhance.html#PIL.ImageEnhance.Contrast, http://effbot.org/imagingbook/imageenhance.htm#tag-ImageEnhance.Contrast
from PIL import Image, ImageEnhance
img = Image.open('data/srcimg21.jpg')
#
enhancer = ImageEnhance.Contrast(img)
enhancer.enhance(0.0).save(
"result/ImageEnhance_Contrast_000.jpg")
enhancer.enhance(0.25).save(
"result/ImageEnhance_Contrast_025.jpg")
enhancer.enhance(0.5).save(
"result/ImageEnhance_Contrast_050.jpg")
enhancer.enhance(0.75).save(
"result/ImageEnhance_Contrast_075.jpg")
enhancer.enhance(1.0).save(
"result/ImageEnhance_Contrast_100.jpg")
factor=0.0 |
factor=0.25 |
factor=0.5 |
factor=0.75 |
factor=1.0 |
class Brightness¶
- doc
https://pillow.readthedocs.io/en/latest/reference/ImageEnhance.html#PIL.ImageEnhance.Brightness, http://effbot.org/imagingbook/imageenhance.htm#tag-ImageEnhance.Brightness
from PIL import Image, ImageEnhance
img = Image.open('data/srcimg22.jpg')
#
enhancer = ImageEnhance.Brightness(img)
enhancer.enhance(0.0).save(
"result/ImageEnhance_Brightness_000.jpg")
enhancer.enhance(0.25).save(
"result/ImageEnhance_Brightness_025.jpg")
enhancer.enhance(0.5).save(
"result/ImageEnhance_Brightness_050.jpg")
enhancer.enhance(0.75).save(
"result/ImageEnhance_Brightness_075.jpg")
enhancer.enhance(1.0).save(
"result/ImageEnhance_Brightness_100.jpg")
factor=0.0 |
factor=0.25 |
factor=0.5 |
factor=0.75 |
factor=1.0 |
class Sharpness¶
- doc
https://pillow.readthedocs.io/en/latest/reference/ImageEnhance.html#PIL.ImageEnhance.Sharpness, http://effbot.org/imagingbook/imageenhance.htm#tag-ImageEnhance.Sharpness
from PIL import Image, ImageEnhance
img = Image.open('data/srcimg05.jpg')
#
enhancer = ImageEnhance.Sharpness(img)
enhancer.enhance(0.0).save(
"result/ImageEnhance_Sharpness_000.jpg")
enhancer.enhance(0.5).save(
"result/ImageEnhance_Sharpness_050.jpg")
enhancer.enhance(1.0).save(
"result/ImageEnhance_Sharpness_100.jpg")
enhancer.enhance(1.5).save(
"result/ImageEnhance_Sharpness_150.jpg")
enhancer.enhance(2.0).save(
"result/ImageEnhance_Sharpness_200.jpg")
factor=0.0 |
factor=0.5 |
factor=1.0 |
factor=1.5 |
factor=2.0 |