小工具知识网

当前位置: 首页 > 行业知识 > 【工具】PIL图片颜色处理

行业知识

【工具】PIL图片颜色处理

2026-11-13 04:12:43 来源:互联网转载

使���前置函数,用于图片效果显示

from PIL import Image, ImageOps, ImageEnhanceimport matplotlib.pyplot as pltclass SHOW:    def __init__(self):        self.idx = 0        # 创建宽10英寸、高90英寸        self.fig = plt.figure(figsize=(10,90))        def add(self, img, title):        self.idx += 1        # 创建单元格 55行,每行5个        ax = self.fig.add_subplot(55, 5, self.idx, xticks=[], yticks=[])        ax.imshow(img)        ax.set_title(title)         show = SHOW()img = Image.open('../data/f1.png').convert('RGB')show.add(img, 'source')

1、调整图片亮度

from PIL import Image, ImageEnhance# 打开图片文件image = Image.open("input.jpg").convert('RGB')# 创建一个Brightness对象,设置亮度因子为0.5(变暗)enhancer = ImageEnhance.Brightness(image)darker_image = enhancer.enhance(0.5)# 创建一个Brightness对象,设置亮度因子为1.5(变亮)enhancer = ImageEnhance.Brightness(image)brighter_image = enhancer.enhance(1.5)# 保存调整后的图片darker_image.save("darker.jpg")brighter_image.save("brighter.jpg")

2、取反色

from PIL import Image, ImageOps# 打开图片文件image = Image.open("input.jpg").convert('RGB')# 使用ImageOps.invert()函数将图片取反色inverted_image = ImageOps.invert(image) 

3、提取rgb通道

show = SHOW()# 默认是RGBLimg = Image.open('../data/f1.png').convert('RGB')r,g,b = img.split()show.add(r, 'r')show.add(g, 'g')show.add(b, 'b')

4、转灰度图

img = Image.open('../data/f1.png')img = img.convert('L')show.add(img, 'gray')

5、颜色通道合并

Image.merge(mode='RGBA', bands=[r,g,b,r]) 

根据不同的mode,需要的通道数有所区分

使用 r,g,b,l = Image.open('../data/f1.png').split()

Image.merge() 函数中的 mode 参数用于指定输出图像的模式,它决定了图像的颜色空间和通道配置。PIL(Python Imaging Library)支持多种不同的模式,这些模式定义了图像的颜色深度和类型。以下是一些常见的 mode 参数选项:

  • 'L': 表示灰度图像,只有一个亮度通道。
  • 'RGB': 表示红绿蓝三原色图像,没有透明度通道。
  • 'RGBA': 表示红绿蓝三原色加上一个透明度通道的图像。
  • 'CMYK': 表示青、洋红、黄和黑色四个印刷颜色通道,常用于印刷行业。
  • 'YCbCr': 表示亮度和两个色差通道,常用于视频编码。

    除了上述提到的几种模式,PIL还支持其他多种色彩模式,如 'HSV'(色相、饱和度、明度)、'I'(32位有符号整数)、'F'(32位浮点数)等。每种模式都有其特定的用途和适用场景。

    img = Image.open('../data/f1.png')gray = img.convert('L')       img = Image.open('../data/f1.png').convert('RGB')r,g,b = img.split()for c1 in [r,g,b]:    for c2 in [r,g,b]:        for c3 in [r,g,b]:             show.add(Image.merge(mode='RGB', bands=[c1,c2,c3]), '')

上一篇:空白云服务器怎么设置密码?

下一篇:互联网服务器在哪里?