python图片横向合并_python3 图片横向合并

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值