前言
两张图片无缝拼接。
代码
主要应用PIL库中的Image类,new方法创建image对象,再用paste方法拼接图片。
代码如下:
from PIL import Image
def pic_joint(path1, path2, flag='horizontal'):
"""
:param path1: path
:param path2: path
:param flag: horizontal or vertical
:return:
"""
img1,img2 = Image.open(path1), Image.open(path2)
# 自定义设置宽高(读者自行修改要拼接的图片分辨率)
img1 = img1.resize((5100, 7015), Image.ANTIALIAS)
img2 = img2.resize((5100, 7015), Image.ANTIALIAS)
size1, size2 = img1.size, img2.size
if flag == 'horizontal':
#创建Image对象(模式,大小),横向宽度就是两张图片相加,高度不变
joint = Image.new('RGB', (size1[0] + size2[0], size1[1]))
loc1, loc2 = (0, 0), (size1[0], 0)
#按位置拼接,二元组
joint.paste(img1, loc1)
joint.paste(img2, loc2)
#读者自定义保存的路径
joint.save('D:/photo1/horizontal.png')
elif flag == 'vertical':
joint = Image.new('RGB', (size1[0], size1[1] + size2[1]))
loc1, loc2 = (0, 0), (0, size1[1])
joint.paste(img1, loc1)
joint.paste(img2, loc2)
joint.save('D:/photo1/vertical.png')
传参:pycharm写到
if __name__ == '__main__':
中,jupyter notebook直接写到不同的In []:下运行即可
#要拼接的图片路径
path1 = r"D:/photo1/1.png"
path2 = r"D:/photo1/2.png"
# 横向拼接
#pic_joint(path1, path2, flag='horizontal')
# 纵向拼接
pic_joint(path1, path2, flag='vertical')
效果展示
总结
应用场景:
- 扫描后的身份证正反面两张图拼接成一张图
- 扫描的合格证正反面两张图拼接成一张图
- 等等……