本文研究的主要是python PIL实现图片合成的相关内容,具体介绍如下,分享实例代码。

在项目中需要将两张图片合在一起。遇到两种情况,一种就是两张非透明图片的合成, 一种是涉及到透明png的合成。

相关API见 http://pillow.readthedocs.io/en/latest/reference/Image.html

第一种情况,直接将两张图片合在一起就可以了。如下图所示,将两张图片合在一起

+

=

详细代码

from PIL import Image

#加载底图

base_img = Image.open(ur'D:\Desktop\1.png')

# 可以查看图片的size和mode,常见mode有RGB和RGBA,RGBA比RGB多了Alpha透明度

# print base_img.size,base_img.mode

box = (166,64,320,337) # 底图上需要P掉的区域

#加载需要P上去的图片

tmp_img = Image.open(ur'D:\Desktop\2.png')

#这里可以选择一块区域或者整张图片

#region = tmp_img.crop((0,304,546)) #选择一块区域

#或者使用整张图片

region = tmp_img

#使用 paste(region,box) 方法将图片粘贴到另一种图片上去.

# 注意,region的大小必须和box的大小完全匹配。但是两张图片的mode可以不同,合并的时候回自动转化。如果需要保留透明度,则使用RGMA mode

#提前将图片进行缩放,以适应box区域大小

# region = region.rotate(180) #对图片进行旋转

region = region.resize((box[2] - box[0],box[3] - box[1]))

base_img.paste(region,box)

#base_img.show() # 查看合成的图片

base_img.save('./out.png') #保存图片

第一种情况时候规则的图片进行合并,比如矩形,难以对于任意形状的图片。对于任意形状的合并可以考虑使用透明的PNG来完成。

第二种情况,将非透明的图片放在底部,上面放一张局部透明的png图片,然后合成一张图片。

代码

from PIL import Image

#加载中间透明的手机图片

base_img = Image.open(ur'D:\Desktop\3.png')

#新建透明底图,大小和手机图一样,mode使用RGBA,保留Alpha透明度,颜色为透明

#Image.new(mode,size,color=0),color可以用tuple表示,分别表示RGBA的值

target = Image.new('RGBA',base_img.size,(0,0))

box = (166,337) #区域

# 加载需要狐狸像

region = Image.open(ur'D:\Desktop\4.png')

region = region.rotate(180) #旋转180度

#确保图片是RGBA格式,大小和box区域一样

region = region.convert("RGBA")

region = region.resize((box[2] - box[0],box[3] - box[1]))

#先将狐狸像合成到底图上

target.paste(region,box)

#将手机图覆盖上去,中间透明区域将狐狸像显示出来。

target.paste(base_img,0),base_img) #第一个参数表示需要粘贴的图像,中间的是坐标,最后是一个是mask图片,用于指定透明区域,将底图显示出来。

# target.show()

target.save('./out.png') # 保存图片

总结

以上就是本文关于python PIL实现图片合成实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

python图像合成代码_python使用pil库实现图片合成实例代码相关推荐

  1. python画棒棒糖程序_Python使用turtle库绘制小猪佩奇(实例代码)

    turtle(海龟)是Python重要的标准库之一,它能够进行基本的图形绘制.turtle图形绘制的概念诞生于1969年,成功应用于LOGO编程语言. turtle库绘制图形有一个基本框架:一个小海龟 ...

  2. Python 技术篇-用PIL库修改图片透明度实例演示,改变png图片色道为RGBA、RGB

    PIL 库可以设置图片透明度. pip install pillow 安装了 pillow 库后就可以使用 PIL 库了. 我们都知道,图片是由无数个点组成的,300x300 像素,就是 9 万个点. ...

  3. python 地图偏移_python 地图经纬度转换、纠偏的实例代码 百度地图经纬度web纠偏怎么用...

    天地图的经纬度 经过纠偏了么 给个例子证明下 如何用python实现百度地图墨卡托坐标跟经纬度坐标互转 麦哲伦机器: 系统设置 地图单位 自定义坐标系 横向墨卡托 原点纬度0 原点经度126(通化) ...

  4. python操作hive数据库代码_python导出hive数据表的schema实例代码

    本文研究的主要问题是python语言导出hive数据表的schema,分享了实现代码,具体如下. 为了避免运营提出无穷无尽的查询需求,我们决定将有查询价值的数据从mysql导入hive中,让他们使用H ...

  5. python处理分组_Python中的groupby分组功能的实例代码

    pandas中的DataFrame中可以根据某个属性的同一值进行聚合分组,可以选单个属性,也可以选多个属性: 代码示例: import pandas as pd A=pd.DataFrame([['B ...

  6. python 地图偏移_python 地图经纬度转换、纠偏的实例代码

    python 地图经纬度转换.纠偏的代码如下所示: # -*- coding: utf-8 -*- import json import urllib import math x_pi = 3.141 ...

  7. python写透视挂_python opencv实现任意角度的透视变换实例代码

    本文主要分享的是一则python+opencv实现任意角度的透视变换的实例,具体如下: # -*- coding:utf-8 -*- import cv2 import numpy as np def ...

  8. python爬虫网页中的图片_Python爬虫爬取一个网页上的图片地址实例代码

    本文实例主要是实现爬取一个网页上的图片地址,具体如下. 读取一个网页的源代码: import urllib.request def getHtml(url): html=urllib.request. ...

  9. python自带的PIL库扩展图片大小给图片加上文字描述

    利用python自带的PIL库扩展图片大小给图片加上文字描述.大多都是库函数调用,只是给定图片宽度后计算文字所需行数的代码需要写. 代码比较丑,but it works. #!/usr/bin/env ...

最新文章

  1. CVPR2020|Facebook PIFuHD:二维图像生成高质量、高细节三维人物
  2. vue中computed和methods区别
  3. 111. 二叉树的最小深度 golang
  4. 10万量级30秒自动化配座,0现场故障:这届冬奥票务系统有点不一样
  5. 双十一淘宝、京东服务器瘫痪大揭秘 感悟
  6. Centos7安装完毕后无法联网的解决方法
  7. 基于Java毕业设计优课网设计与实现源码+系统+mysql+lw文档+部署软件
  8. matlab自适应滤波器 LMS算法
  9. 【线性代数(1)】二阶三阶不等式
  10. 营养保健品公司网站建设策划书
  11. 路由器和计算机的功能有何不同,网关和路由器的区别是什么 两者又有什么不同...
  12. OSChina 周六乱弹 ——什么是村支书不可推卸的责任!
  13. 最新《播布客李明新概念C语言作品》
  14. 【NLP】文本匹配——Simple and Effective Text Matching with Richer Alignment Features阅读与总结(RE2)
  15. c# 微软 REST API语音转文字
  16. Proteus简单入门教程以及使用Proteus仿真STM32F103单片机和Arduino单片机
  17. PHP在线客服系统源码+H5+APP+搭建教程实例
  18. Python从小白到新手
  19. Django框架的模型层之多表操作
  20. 消息总线c语言,消息队列与消息总线 - 有什么区别?

热门文章

  1. 判断SQL是否为最优查询语句
  2. IDEA中web项目maven项目打war包的方式
  3. freeswitch+soundtouch 变声测试失败
  4. 【网络监控】公司网络摄像头画面卡顿、不显示 视频时有时无问题记录
  5. Leakcanary原理笔记
  6. tl-wdr5620虚拟服务器,TP-LINK路由器 TL-WDR5620 设置、使用、问题解答综合指南 | 192路由网...
  7. 双核CPU和双CPU的区别
  8. Three.js-着色器(glsl内置函数)
  9. qt的pos()和globalpos()(globalpos是相对于桌面的)(转)
  10. 非技术手段获取同学信息