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

前言

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

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

 

termap:天地图底图瓦片

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

 

overlay_t:天地图标注瓦片

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

 

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

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

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

你可能感兴趣的:(Python,WebGIS,python,开发语言)