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

前言

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

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

 

termap:天地图底图瓦片

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

 

overlay_t:天地图标注瓦片

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

 

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

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

 那么,如果我们存大大量的图片,如何通过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实现批量合并多张图片的方法

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年3月9日 上午7:37
下一篇 2023年3月9日 上午7:38

相关推荐