mirror of
https://github.com/ciromattia/kcc
synced 2025-12-13 09:46:25 +00:00
WebToons: Improved performance of directory merger
This commit is contained in:
@@ -52,27 +52,31 @@ def mergeDirectory(work):
|
|||||||
images = []
|
images = []
|
||||||
imagesClear = []
|
imagesClear = []
|
||||||
sizes = []
|
sizes = []
|
||||||
|
h = 0
|
||||||
for root, dirs, files in walkLevel(directory, 0):
|
for root, dirs, files in walkLevel(directory, 0):
|
||||||
for name in files:
|
for name in files:
|
||||||
if getImageFileName(name) is not None:
|
if getImageFileName(name) is not None:
|
||||||
images.append([Image.open(os.path.join(root, name)), os.path.join(root, name)])
|
i = Image.open(os.path.join(root, name))
|
||||||
|
images.append([os.path.join(root, name), i.size[0], i.size[1]])
|
||||||
|
sizes.append(i.size[0])
|
||||||
if len(images) > 0:
|
if len(images) > 0:
|
||||||
for i in images:
|
|
||||||
sizes.append(i[0].size[0])
|
|
||||||
mw = max(set(sizes), key=sizes.count)
|
mw = max(set(sizes), key=sizes.count)
|
||||||
for i in images:
|
for i in images:
|
||||||
if i[0].size[0] == mw:
|
if i[1] == mw:
|
||||||
i[0] = i[0].convert('RGB')
|
h += i[2]
|
||||||
imagesClear.append(i)
|
imagesClear.append(i[0])
|
||||||
h = sum(i[0].size[1] for i in imagesClear)
|
# Silently drop directories that contain too many images
|
||||||
|
if h > 262144:
|
||||||
|
return None
|
||||||
result = Image.new('RGB', (mw, h))
|
result = Image.new('RGB', (mw, h))
|
||||||
y = 0
|
y = 0
|
||||||
for i in imagesClear:
|
for i in imagesClear:
|
||||||
result.paste(i[0], (0, y))
|
img = Image.open(i)
|
||||||
y += i[0].size[1]
|
img = img.convert('RGB')
|
||||||
for i in imagesClear:
|
result.paste(img, (0, y))
|
||||||
os.remove(i[1])
|
y += img.size[1]
|
||||||
savePath = os.path.split(imagesClear[0][1])
|
os.remove(i)
|
||||||
|
savePath = os.path.split(imagesClear[0])
|
||||||
result.save(os.path.join(savePath[0], os.path.splitext(savePath[1])[0] + '.png'), 'PNG')
|
result.save(os.path.join(savePath[0], os.path.splitext(savePath[1])[0] + '.png'), 'PNG')
|
||||||
except Exception:
|
except Exception:
|
||||||
return str(sys.exc_info()[1])
|
return str(sys.exc_info()[1])
|
||||||
|
|||||||
Reference in New Issue
Block a user