pip install Pillow
import os
import glob
import time
from sys import argv
from PIL import Image
# 多少张图片合成一张
merge_count = 2
merge_queue = []
min_width = 9999999
min_height = 99999999
if len(argv) <= 1:
exit()
if not os.path.exists("output"):
os.makedirs("output")
for _file in glob.glob(os.path.join(argv[1], "*.jpg")):
img = Image.open(_file)
if img.width > img.height:
continue
min_width = min(min_width, img.width)
min_height = min(min_height, img.height)
if len(merge_queue)+1 == merge_count:
# merge image
target = Image.new('RGB', (min_width*merge_count*merge_count, min_height))
if abs(img.height - min_height) > 100:
img = img.resize((int((img.width / img.height) * min_height), min_height))
target.paste(img, (0,0))
_tmpWidth = img.width
for _tmpFile in merge_queue:
_tmpImage = Image.open(_tmpFile)
if abs(_tmpImage.height - min_height) > 100:
_tmpImage = _tmpImage.resize((int((_tmpImage.width / _tmpImage.height) * min_height), min_height))
target.paste(_tmpImage, (_tmpWidth, 0))
_tmpWidth += _tmpImage.width
_tmpImage.close()
target = target.crop((0, 0, _tmpWidth, min_height))
target.save("output/%d.jpg" % int(time.time()*1000))
# reset count
merge_queue = []
min_width = 999999
min_height = 999999
else:
merge_queue.append(img.filename)
img.close()