Вы можете использовать l oop с Image.crop ((слева, сверху, справа, снизу)) , чтобы получить часть изображения и сохранить ее
from PIL import Image
img = Image.open('concat.jpg')
width, height = img.size
#print(width, height)
for i, y in enumerate(range(0, height, 1200), 1):
# to calculate height for last image
h = height-y
if h > 1200:
h = 1200
print(i, width, h)
cropped = img.crop( (0, y, width, y+h) )
cropped.save(f'image{i}.jpg')
Вместо загрузки 'concat.jpg'
вы можете напрямую использовать изображение dst
с вашего get_concat_v_multi_resize
from PIL import Image
import glob
def get_concat_v_multi_resize(im_list, resample=Image.BICUBIC):
min_width = min(im.width for im in im_list)
im_list_resize = [im.resize((min_width, int(im.height * min_width / im.width)),resample=resample)
for im in im_list]
total_height = sum(im.height for im in im_list_resize)
dst = Image.new('RGB', (min_width, total_height))
pos_y = 0
for im in im_list_resize:
dst.paste(im, (0, pos_y))
pos_y += im.height
return dst
print('reading...')
imgs = [Image.open(name) for name in glob.glob('folder/*.jpg')]
print('joining...')
img = get_concat_v_multi_resize(imgs)
print('spliting...')
width, height = img.size
#print(width, height)
for i, y in enumerate(range(0, height, 1200), 1):
# to calculate height for last image
h = height-y
if h > 1200:
h = 1200
print(i, width, h)
cropped = img.crop( (0, y, width, y+h) )
cropped.save(f'image{i}.jpg')