python:图片合成(PIL 库Image类模块)

实现两张图的合成。两种情况:两张非透明图的合成;涉及透明图的合成。

1.第一类:直接将两张图和在一起就行,选好位置粘贴覆盖。(适合规则图合并)

from PIL import Image
#加载底图
base_img = Image.open(ur'9.png')#加载底图
# 可以查看图片的size和mode,常见mode有RGB和RGBA,RGBA比RGB多了Alpha透明度
#  print base_img.size, base_img.mode
box = (60, 44, 130, 120)  # 底图上需要P掉的区域
#加载需要P上去的图片
tmp_img = Image.open(ur'12.png')#要粘贴的图可选择大小或整张
#这里可以选择一块区域或者整张图片
#region = tmp_img.crop((10,10,100,110)) #选择一块区域
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') #保存图片

            

2.第二类:底图含有透明区域,合并到透明区域

#法二(底图含有透明部分)
base_img = Image.open(r'12.png')#加载含透明底图
target = Image.new('RGBA',base_img.size,(0,0,0,0))#创建一个同样大小的透明图不同于RGB
box = (166, 64, 320, 337)#p图的区域
region = Image.open(r'9.png')
region = region.convert('RGBA')#转换图片格式确保一致
region = region.resize(( box[2]-box[0],box[3]-box[1]))
target.paste(region,box)
#region.show()
target.paste(base_img,(0,0),base_img)#00是坐标,第三个参数把透明部分显示出来
target.show()
target.save('./out.png')  # 保存图片

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值