#This code does everything in subdirectories only.
from PIL import Image
import os
def getFolders(dir):
return [name for name in os.listdir(dir)
if os.path.isdir(os.path.join(dir, name))]
def getFiles(dir):
files = []
for c in os.listdir(dir):
_, ext = os.path.splitext(c)
if ext == '.png':
files.append(c)
return files
def merge_images(dir, file):
image = Image.open(os.path.join(dir, file))
base = Image.open(out_file)
(width1, height1) = image.size
(width2, height2) = base.size
result_width = max(width1, width2)
result_height = height1 + height2
out = Image.new('RGB', (result_width, result_height))
out.paste(im=base, box=(0, 0))
out.paste(im=image, box=(0, height2))
out.save(out_file,"PNG")
return out
def createTarget():
result = Image.new('RGB', (1, 1))
result.save(out_file,"PNG")
def name(loop):
loop = int(loop) + 1
if loop < 10:
loop = '00' + str(loop)
elif loop < 100:
loop = '0' + str(loop)
else:
loop = str(loop)
return str(loop)
dir = '/Users/user/Documents/[raws]All Raws/'
rootdir = dir
folder = getFolders(dir)
imgNum = '001'
for i in range(len(folder)):
subfolder = getFolders(rootdir + folder[i])
if subfolder != []:
for x in range(len(subfolder)):
subfolderPath = rootdir + folder[i] + '/' + subfolder[x]
images = getFiles(subfolderPath)
out_file = folder[i] + '_' + imgNum + '.png'
createTarget()
for im in images:
merge_images(subfolderPath, im)
imgNum = name(imgNum)
print(folder[i] + ': Done.')
else:
break
print('\n\nAll done!')
Comments