ImageEnhance Module ################### .. note:: All source images in this document are derived from https://www.pexels.com (CC0 License). .. |srcimg01| image:: _static/exams/data/srcimg01.jpg :width: 20% .. |srcimg02| image:: _static/exams/data/srcimg02.jpg :width: 20% .. |srcimg03| image:: _static/exams/data/srcimg03.jpg :width: 20% .. |srcimg04| image:: _static/exams/data/srcimg04.jpg :width: 20% .. |srcimg05| image:: _static/exams/data/srcimg05.jpg :width: 20% .. |srcimg06| image:: _static/exams/data/srcimg06.jpg :width: 20% .. |srcimg07| image:: _static/exams/data/srcimg07.jpg :width: 20% .. |srcimg11| image:: _static/exams/data/srcimg11.png :width: 20% .. |srcimg12| image:: _static/exams/data/srcimg12.jpg :width: 20% .. |srcimg13| image:: _static/exams/data/srcimg13.jpg :width: 20% .. |srcimg14| image:: _static/exams/data/srcimg14.jpg :width: 20% .. |srcimg17| image:: _static/exams/data/srcimg17.jpg :width: 20% .. |srcimg18| image:: _static/exams/data/srcimg18.jpg :width: 20% .. |srcimg19| image:: _static/exams/data/srcimg19.jpg :width: 20% .. |srcimg20| image:: _static/exams/data/srcimg20.jpg :width: 20% .. |srcimg21| image:: _static/exams/data/srcimg21.jpg :width: 20% .. |srcimg22| image:: _static/exams/data/srcimg22.jpg :width: 20% .. |srcimg23| image:: _static/exams/data/srcimg23.jpg :width: 20% 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 :code:`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 :code:`class _Enhance`: .. code-block:: python :caption: PIL/ImageEnhance.py 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 :code:`self.degenerate` and :code:`self.image`, like this: .. code-block:: python :caption: PIL/ImageEnhance.py :emphasize-lines: 3, 8 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) :code:`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 *************************** .. |ImageEnhance_Brightness.res1| image:: _static/exams/result/ImageEnhance_Brightness_000.jpg .. |ImageEnhance_Brightness.res2| image:: _static/exams/result/ImageEnhance_Brightness_025.jpg .. |ImageEnhance_Brightness.res3| image:: _static/exams/result/ImageEnhance_Brightness_050.jpg .. |ImageEnhance_Brightness.res4| image:: _static/exams/result/ImageEnhance_Brightness_075.jpg .. |ImageEnhance_Brightness.res5| image:: _static/exams/result/ImageEnhance_Brightness_100.jpg .. |ImageEnhance_Color.res1| image:: _static/exams/result/ImageEnhance_Color_000.jpg .. |ImageEnhance_Color.res2| image:: _static/exams/result/ImageEnhance_Color_025.jpg .. |ImageEnhance_Color.res3| image:: _static/exams/result/ImageEnhance_Color_050.jpg .. |ImageEnhance_Color.res4| image:: _static/exams/result/ImageEnhance_Color_075.jpg .. |ImageEnhance_Color.res5| image:: _static/exams/result/ImageEnhance_Color_100.jpg .. |ImageEnhance_Contrast.res1| image:: _static/exams/result/ImageEnhance_Contrast_000.jpg .. |ImageEnhance_Contrast.res2| image:: _static/exams/result/ImageEnhance_Contrast_025.jpg .. |ImageEnhance_Contrast.res3| image:: _static/exams/result/ImageEnhance_Contrast_050.jpg .. |ImageEnhance_Contrast.res4| image:: _static/exams/result/ImageEnhance_Contrast_075.jpg .. |ImageEnhance_Contrast.res5| image:: _static/exams/result/ImageEnhance_Contrast_100.jpg .. |ImageEnhance_Sharpness.res1| image:: _static/exams/result/ImageEnhance_Sharpness_000.jpg .. |ImageEnhance_Sharpness.res2| image:: _static/exams/result/ImageEnhance_Sharpness_050.jpg .. |ImageEnhance_Sharpness.res3| image:: _static/exams/result/ImageEnhance_Sharpness_100.jpg .. |ImageEnhance_Sharpness.res4| image:: _static/exams/result/ImageEnhance_Sharpness_150.jpg .. |ImageEnhance_Sharpness.res5| image:: _static/exams/result/ImageEnhance_Sharpness_200.jpg class Color =========== :doc: https://pillow.readthedocs.io/en/latest/reference/ImageEnhance.html#PIL.ImageEnhance.Color, http://effbot.org/imagingbook/imageenhance.htm#tag-ImageEnhance.Color .. literalinclude:: _static/exams/ImageEnhance_Color_01.py .. list-table:: * - factor=0.0 |ImageEnhance_Color.res1| - factor=0.25 |ImageEnhance_Color.res2| - factor=0.5 |ImageEnhance_Color.res3| - factor=0.75 |ImageEnhance_Color.res4| - factor=1.0 |ImageEnhance_Color.res5| class Contrast ============== :doc: https://pillow.readthedocs.io/en/latest/reference/ImageEnhance.html#PIL.ImageEnhance.Contrast, http://effbot.org/imagingbook/imageenhance.htm#tag-ImageEnhance.Contrast .. literalinclude:: _static/exams/ImageEnhance_Contrast_01.py .. list-table:: * - factor=0.0 |ImageEnhance_Contrast.res1| - factor=0.25 |ImageEnhance_Contrast.res2| - factor=0.5 |ImageEnhance_Contrast.res3| - factor=0.75 |ImageEnhance_Contrast.res4| - factor=1.0 |ImageEnhance_Contrast.res5| class Brightness ================ :doc: https://pillow.readthedocs.io/en/latest/reference/ImageEnhance.html#PIL.ImageEnhance.Brightness, http://effbot.org/imagingbook/imageenhance.htm#tag-ImageEnhance.Brightness .. literalinclude:: _static/exams/ImageEnhance_Brightness_01.py .. list-table:: * - factor=0.0 |ImageEnhance_Brightness.res1| - factor=0.25 |ImageEnhance_Brightness.res2| - factor=0.5 |ImageEnhance_Brightness.res3| - factor=0.75 |ImageEnhance_Brightness.res4| - factor=1.0 |ImageEnhance_Brightness.res5| class Sharpness =============== :doc: https://pillow.readthedocs.io/en/latest/reference/ImageEnhance.html#PIL.ImageEnhance.Sharpness, http://effbot.org/imagingbook/imageenhance.htm#tag-ImageEnhance.Sharpness .. literalinclude:: _static/exams/ImageEnhance_Sharpness_01.py .. list-table:: * - factor=0.0 |ImageEnhance_Sharpness.res1| - factor=0.5 |ImageEnhance_Sharpness.res2| - factor=1.0 |ImageEnhance_Sharpness.res3| - factor=1.5 |ImageEnhance_Sharpness.res4| - factor=2.0 |ImageEnhance_Sharpness.res5|