import numpy as np
import PIL
from PIL import Image
import os

pdf_dir = "c:/web/veldb/vimsreports/"
os.chdir(pdf_dir)

list_im = ['out-1.jpg', 'out-2.jpg', 'out-3.jpg', 'out-4.jpg', 'out-5.jpg']
imgs    = [ PIL.Image.open(i) for i in list_im ]
# pick the image which is the smallest, and resize the others to match it (can be arbitrary image shape here)
min_shape = sorted( [(np.sum(i.size), i.size ) for i in imgs])[0][1]
imgs_comb = np.hstack( (np.asarray( i.resize(min_shape) ) for i in imgs ) ) 

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack( (np.asarray( i.resize(min_shape) ) for i in imgs ) )
imgs_comb = PIL.Image.fromarray( imgs_comb)
imgs_comb.save( 'out_vertical.jpg' )