Python混合图片操作

举报
新建文件夹 发表于 2021/12/13 22:15:28 2021/12/13
【摘要】 一、前言 今天我们来实现一下图片的混合。图片混合就是把两张图片混合在一起,我们可以看下效果,具体效果如下: 左边和中间是两张不一样的图片,而右边则是混合后的图片。在朋友圈发几张这种图片还是比较有趣的...

一、前言

今天我们来实现一下图片的混合。图片混合就是把两张图片混合在一起,我们可以看下效果,具体效果如下:

混合图片
左边和中间是两张不一样的图片,而右边则是混合后的图片。在朋友圈发几张这种图片还是比较有趣的。

二、通过混合通道混合图片

混合图片的方式有很多种,我们先来看看如何通过混合图片的通道来实现图片混合。代码如下:

from PIL import Image
img_size = (400, 400)

# 读取图片
img1 = Image.open("1.jpg").convert("RGB")
img2 = Image.open("2.jpg").convert("RGB")

# 修改图片尺寸
img1 = img1.resize(img_size)
img2 = img2.resize(img_size)

# 分离三个通道
r1, g1, b1 = img1.split()
r2, g2, b2 = img2.split()

# 合并通道
img = Image.merge("RGB", (r1, g2, b1))
img.show()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

这里我们操作的流程如下:

  1. 读取图片
  2. 修改图片尺寸
  3. 分离通道
  4. 合并通道

首先读取图片的时候我们将图片转换成RGB模式,这样可以方便后续分离通道的操作。然后我们修改图片到同一尺寸,因为混合的时候需要尺寸一样。修改尺寸后就可以分离通道了,然后将两个图片的通道混合在一起达到混合图片的效果。效果图如下:

11.jpg

这里的效果不是特别好,我们可以通过给图片添加滤镜的方式来优化图片效果。这里就不详细说了。我们看第二种方式。

三、使用blend函数混合

在Pillow种提供了一个blend函数用于混合图片,操作非常简单,具体代码如下:

from PIL import Image
img_size = (400, 400)

# 读取图片
img1 = Image.open("1.jpg").convert("RGB")
img2 = Image.open("2.jpg").convert("RGB")

# 修改尺寸
img1 = img1.resize(img_size)
img2 = img2.resize(img_size)

# 混合图片
img = Image.blend(img1, img2, 0.5)
img.show()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

前面的操作是一样的,后面我们没有分离通道,而是直接调用Image.blend函数。这里传入三个参数,分别是两张图片和图片透明度,这里可以通过第三个参数调整混合效果。大家可以多尝试尝试。

文章来源: zacksock.blog.csdn.net,作者:ZackSock,版权归原作者所有,如需转载,请联系作者。

原文链接:zacksock.blog.csdn.net/article/details/121904595

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。