Python实现批量合并多张图片的方法(附源码)

前言

如何通过Python快速实现批量将多张图片进行合并(重叠)处理呢,例如如下文件夹中,有两个图层文件夹,分别为:

 

termap:天地图底图瓦片

 

overlay_t:天地图标注瓦片

 

我们是目标是将termap文件夹和overlay_t文件夹中的同名图片进行合并,生成新的合并后的图片,如下图所示。

 那么,如果我们存大大量的图片,如何通过Python开发语言快速实现合并操作呢?本文详细说明如下:


一、实现思路

1、首先,遍历termap目录,对termap目录下的的每一天图片进行逐一处理;

def traverse_dir_files(root_dir):
    '''
    遍历文件夹下的所有图片文件进行合并处理
    '''
    path_list = []
    for dirpath, dirnames, filenames in os.walk(root_dir):
        # for dir in dirnames:
        #     path_list.append(os.path.join(dirpath, dir))
        for name in filenames:
            if name.endswith(".png"):
                path_list.append(os.path.join(dirpath, name))
    combine(path_list)

2、使用PIL开发库的Image类,加载termap目录下的图片

3、查找overlay_t目录下与termap目录下的同名图片

4、使用PIL开发库的Image类,加载overlay_t目录下的图片

5、合并两张图片

6、生成新的合并图片并输出

def combine(path_list):
    '''
    合并图片
    '''
    for path in path_list:
        layer1 = Image.open(path).convert('RGBA')  # 加载termap目录中的图片
        lay = path.replace("termap", "overlay_t")  # overlay_t是天地图的标注层文件夹名字
        layer2 = Image.open(lay).convert('RGBA')  # 加载overlay_t目录中的对应图片
        final = Image.new("RGBA", layer1.size)  # 新合并的图像对象
        final = Image.alpha_composite(final, layer1)  #合并图片
        final = Image.alpha_composite(final, layer2) #合并图片
        final = final.convert('RGB')
        final_path = path.replace("termap", "combine")  #生成合并后的图片目录
        final.save(final_path)

二、源代码下载

本功能的Python实现源代码可点击此处下载:Python实现批量合并多张图片的方法

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Python中的PIL库(Pillow)可以很方便地实现多张图片的垂直合并。下面是一个示例代码: ``` from PIL import Image # 打开并读取所有需要合并图片 image1 = Image.open('image1.jpg') image2 = Image.open('image2.jpg') image3 = Image.open('image3.jpg') # 获取所有图片的宽度和高度 width = image1.width # 假设所有图片的宽度相同 height = image1.height + image2.height + image3.height # 创建一张新的空白图片,宽度与输入图片相同,高度为所有图片高度之和 new_image = Image.new('RGB', (width, height)) # 将图片1复制到新的图片的顶部 new_image.paste(image1, (0, 0)) # 将图片2复制到新的图片的第二部分 new_image.paste(image2, (0, image1.height)) # 将图片3复制到新的图片的第三部分 new_image.paste(image3, (0, image1.height + image2.height)) # 保存合并后的图片 new_image.save('merged_image.jpg') ``` 以上代码中,我们首先使用`Image.open()`函数打开需要合并图片,然后利用`image.width`和`image.height`属性获取每张图片的宽度和高度。接下来,我们使用`Image.new()`函数创建一张新的空白图片,并指定宽度和高度。然后,我们使用`new_image.paste()`函数将每张图片复制到新的图片上,通过指定复制的起始位置来实现垂直合并。最后,使用`new_image.save()`函数保存合并后的图片。 这样,就可以将多张图片垂直合并一张新的图片,并保存在指定的文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

动立信息服务

您的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值