前言
如何通过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实现批量合并多张图片的方法