Pillow图像分离与合并
Pillow图像分离与合并
图像(指数字图像)由许多像素点组成,像素是组成图像的基本单位,而每一个像素点又可以使用不同的颜色,最终呈现出了绚丽多彩的图像。它们的本质就是图片呈现颜色时需要遵循的规则,比如 RGB、RGBA、CYMK 等,
而图像的分离与合并,指的就是图像颜色的分离和合并。
Image 类提供了用于分离图像和合并图像的方法 split() 和 merge() 方法,通常情况下,这两个方法会一起使用。
split()分离操作
1 | from PIL import Image |
merge()合并操作
Image 类提供的 merge() 方法可以实现图像的合并操作。
注意,图像合并,可以是单个图像合并,也可以合并两个以上的图像。merge() 方法的语法格式如下:
Image.merge(mode, bands)
参数说明如下:mode:指定输出图片的模式(前面文章博主有介绍)
bands:参数类型为元组或者列表序列,其元素值是组成图像的颜色通道,比如 RGB 分别代表三种颜色通道,可以表示为 (r,g,b)。
注意,该函数会返回一个新的 Image 对象。
- 单个图像的合并指的是将颜色通道进行重新组合,从而得到不一样的图片效果,代码如下所示:
1
2
3
4
5
6from PIL import Image
img = Image.open("D:\\File\\All\\web\\python\\blog\\947849.jpg")
r,g,b = img.split()
ing_merge= Image.merge('RGB', (g,b,r))
ing_merge.save("D:\\File\\All\\web\\python\\blog\\4.jpg")
ing_merge.show() - 两张图片的合并操作也并不复杂,但是要求两张图片的模式、图像大小必须要保持一致,否则不能合并。因此,对于那些模式、大小不同的图片要进行预处理。
1
2
3
4
5
6
7
8
9from PIL import Image
img1 = Image.open("D:\\File\\All\\web\\python\\blog\\947849.jpg")
img2 = Image.open("D:\\File\\All\\web\\python\\blog\\670099.jpg")
img3 = img1.resize(img2.size)
print(img3.size)
r1,g1,b1 = img2.split()
r2,g2,b2 = img3.split()
img4 = Image.merge('RGB',(r1,g2,b1))
img4.show()
一般不会将多张图片混合因为看起来怪怪的
扩展知识:blend() 混合图片
Image 类也提供了 blend() 方法来混合 RGBA 模式的图片(PNG 格式),函数的语法格式如下:
Image.blend(image1,image2, alpha)
参数说明如下:
image1,image2:表示两个 Image 对象,俩张图片的大小应该一样大。
alpha:表示透明度,取值范围为 0 到 1,当取值为 0 时,输出图像相当于 image1 的拷贝,而取值为 1 时,则是 image2 的拷贝,只有当取值为 0.5 时,才为两个图像的中合。因此改值的大小决定了两个图像的混合程度。
该函数会返回一个新的 Image 对象。
与 RGB 模式相比,RGBA 在 RGB 的基础上增加了透明度,通过 Alpha 取值来决定两个图像的混合程度
1 | from PIL import Image |