【图片操作】混合图片

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

一、前言

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

网络异常,图片无法展示
|
左边和中间是两张不一样的图片,而右边则是混合后的图片。在朋友圈发几张这种图片还是比较有趣的。

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

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

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. 合并通道

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

网络异常,图片无法展示
|

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

三、使用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()
复制代码

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


目录
相关文章
|
人工智能 自然语言处理 物联网
LLM2CLIP:使用大语言模型提升CLIP的文本处理,提高长文本理解和跨语言能力
LLM2CLIP 为多模态学习提供了一种新的范式,通过整合 LLM 的强大功能来增强 CLIP 模型。
755 3
LLM2CLIP:使用大语言模型提升CLIP的文本处理,提高长文本理解和跨语言能力
|
分布式计算 大数据 数据处理
Python入门与大数据处理环境配置指南
**Python入门与大数据处理环境配置** Python作为高级编程语言,因其简洁语法和丰富库资源,成为数据处理、AI和大数据分析首选。本文旨在介绍Python基础和环境配置,特别是针对大数据处理的环境搭建。首先,讲解Python语言基础,包括语言概述、基本语法(变量、数据类型、控制流语句、函数和模块)。接着,讨论如何安装Python环境,以及安装NumPy、Pandas等大数据处理库。对于大数据处理,可以选择本地环境或搭建分布式环境,如Hadoop和Spark,并提供相关API示例。最后,列出环境配置中可能遇到的问题及解决方案,如版本不兼容、库安装失败等,并提供参考资料以供深入学习。
454 3
|
数据安全/隐私保护
Bugku---本地管理员
Bugku---本地管理员
基于粒子滤波器的电池剩余使用寿命计算matlab仿真
本研究基于粒子滤波器预测电池剩余使用寿命(RUL),采用MATLAB2022a实现。通过非线性动力学模型模拟电池老化过程,利用粒子滤波器处理非线性和非高斯问题,准确估计电池SOH变化趋势,进而预测RUL。系统仿真结果显示了良好的预测性能。
|
Ubuntu 开发工具 git
ubuntu 14.04的git 错误: gnutls_handshake() failed: Handshake failed
本文提供了一个解决Ubuntu 14.04系统上使用Git时遇到的"gnutls_handshake() failed: Handshake failed"错误的脚本,通过替换git的默认加密传输库gnutls为更稳定的openssl,并指导如何编译安装新版本的git来解决问题。
847 0
|
存储 缓存 监控
深入解析:Elasticsearch集群性能调优策略与最佳实践
【10月更文挑战第8天】Elasticsearch 是一个分布式的、基于 RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量数据。随着企业对实时数据处理需求的增长,Elasticsearch 被广泛应用于日志分析、全文搜索、安全信息和事件管理(SIEM)等领域。然而,为了确保 Elasticsearch 集群能够高效运行并满足业务需求,需要进行一系列的性能调优工作。
906 3
|
监控 数据可视化 算法
通过阿里云百炼的流程管理功能,搭建一个专属的流程能力
阿里云百炼平台结合流程画布与智能体,实现业务流程自动化。通过拖拽配置节点、对接智能体应用,确保数据交互与调度。智能体动态调度提升效率,提供可视化监控。但学习成本、性能优化、错误处理和兼容性是挑战。
1462 7
|
Java Apache
Java将一个对象的属性复制到另一个对象,如何编码
【6月更文挑战第15天】Java将一个对象的属性复制到另一个对象,如何编码
813 3
|
测试技术 iOS开发
用Instruments分析内存使用情况
用Instruments分析内存使用情况
1694 1
|
Dubbo Java 应用服务中间件
Dubbo 3.3.0-beta 版本正式发布
近日,Apache Dubbo 发布了 3.3 分支大版本 3.3.0-beta.1,相较于 3.2 系列版本,3.3.0-beta 引入了一些重量级的功能升级,按照社区规划,3.3 也将是 Dubbo3 非常重要的一个里程碑大版本,在 3.3.0 首个正式版本之后 Dubbo3 将正式进入长期稳定维护态,即标志着 Dubbo3 作为面向云原生时代的下一代微服务框架将具备规划的所有核心功能。

热门文章

最新文章