python 的pilow在将半透明图片复合到正常图片时,需要用到alpha_composite函数
两张图片都必须保留 alpha 通道,即 mode 为 RGBA,alpha 通道是保存图片透明度的通道,如果传入图片为png, 其本身会带有alpha 通道, 如果是jpg, 其本身不带有alpha通道,需要为图片添加 alpha 通道。
Image.alpha_composite(im1,im2)
将im2复合到im1上,返回一个Image对象
参数:im1--第一个图像
im2--第二个图像 im1和im2的size要相同。且im1和im2的mode都必须是RGBA
def get_mongolia(im1, im2, width=0, height=0):
# 蒙层与图片的融合, 将im2贴到im1上
im1_size = im1.size
im2_size = im2.size
crop_size = (min(im1_size[0]-width, im2_size[0]), min(im1_size[1]-height, im2_size[1]))
im1_crop = im1.crop((width, height, crop_size[0] + width, crop_size[1] + height))
im2_crop = im2.crop((0, 0, crop_size[0], crop_size[1]))
mongolia = Image.alpha_composite(im1_crop, im2_crop)
im2_crop.show()
im1.paste(mongolia, (width, height), mongolia)
return im1
上述代码封装为im1添加有蒙层的im2, im2是半透明的图片,先计算出im1 和im2合并的区域大小即crop_size, 然后对im1与im2进行裁剪,利用alpha_composite方法将裁剪后的图片复合起来。再将图片贴到im1中。
width 是融合后im2相对于im1的起始x轴, height 是y轴。
eg:
【素材】
im1
im2
融合后图片
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)