Python Pillow 简明教程
Python Pillow - Color Inversion
Python Pillow 中的色彩反转是一种流行的照片效果,它通过在色轮上反转颜色使其变成互补色调来转换图像。它会导致一些变化,例如黑色变为白色,白色变为黑色,以及其他颜色偏移。
此技术(也称为图像反转或颜色取反)是一种图像处理方法,它系统地改变图像中的颜色。在颜色反转的图像中,颜色的转换方式是浅色区域变深,深色区域变浅,颜色在色谱中反转。
Applying the Color Inversion to an Image
在 Python Pillow 中,色彩反转是通过在图像光谱中反转颜色来实现的。该库在其 ImageOps module 中提供 invert() 函数,让你可以对图像应用色彩反转。此函数旨在否定给定图像的颜色,有效地应用色彩反转效果。该方法的语法如下 −
PIL.ImageOps.invert(image)
其中,
-
image − 这是要反转的输入图像。
Example
以下示例使用 PIL.ImageOps.invert() 函数创建输入图像的反转版本。
from PIL import Image
import PIL.ImageOps
# Open an image
input_image = Image.open('Images/butterfly.jpg')
# Create an inverted version of the image
inverted_image = PIL.ImageOps.invert(input_image)
# Display the input image
input_image.show()
# Display the inverted image
inverted_image.show()
Applying the Color Inversion to RGBA Images
虽然 ImageOps 模块中的大多数函数都设计用于处理 L(灰度)和 RGB 图像。当你尝试将此反转函数应用于具有 RGBA 模式(包括针对透明度的 alpha 通道)的图像时,它实际上会引发 OSError,指出不支持该图像模式。
Example
以下示例演示如何在处理透明度的情况下使用 RGBA 图像。
from PIL import Image
import PIL.ImageOps
# Open an image
input_image = Image.open('Images/python logo.png')
# Display the input image
input_image.show()
# Check if the image has an RGBA mode
if input_image.mode == 'RGBA':
# Split the RGBA image into its components
r, g, b, a = input_image.split()
# Create an RGB image by merging the red, green, and blue components
rgb_image = Image.merge('RGB', (r, g, b))
# Invert the RGB image
inverted_image = PIL.ImageOps.invert(rgb_image)
# Split the inverted image into its components
r2, g2, b2 = inverted_image.split()
# Merge the inverted RGB image with the original alpha channel to maintain transparency
final_transparent_image = Image.merge('RGBA', (r2, g2, b2, a))
# Show the final transparent image
final_transparent_image.show()
else:
# Invert the image for non-RGBA images
inverted_image = PIL.ImageOps.invert(input_image)
inverted_image.show()