Combine várias imagens diferentes de um diretório em uma tela de tamanho 3x6

Eu gosto de imagens de um diretório. Quero que essas imagens criem uma tela 3x6, uma nova imagem que mostre as imagens desse diretório lado a lado em uma única imagem / tela. Cada imagem deve ser uma imagem diferente. Lado a lado. -

Eu tenho o seguinte código. Ele tenta ler os nomes dos arquivos de imagem de um diretório armazenado em uma lista. Em seguida, ele tenta copiar / combinar cada imagem em uma tela 3x6. No entanto, o resultado que eu quero não acontece. O que estou fazendo errado?

import Image
import os
import PIL
import glob
import matplotlib.pyplot as plt

# path
path = "/media/"
listing = os.listdir(path)

# getting all path+filename in a list
npath=[]
im=[]
for infile in listing:
  im.append(infile)
  npath.append(os.path.join(path, infile))

#creates a new empty image, RGB mode, and size 400 by 400.
new_im = Image.new('RGB', (2100,2400))


#Here I resize my opened image, so it is no bigger than ****
#Iterate through a grid with some spacing, to place my image
for i in xrange(0,2100,700):
    for j in xrange(0,2400, 400):
        for imagefile in npath:
            im=Image.open(imagefile)
            im.thumbnail((1000,1000))
            #paste the image at location i,j:
            new_im.paste(im, (i,j))
            new_im.show()
#saving
new_im.save('/media/test.png')

A solução

import Image
import os
import PIL
import glob
import matplotlib.pyplot as plt

# path
path = "/media/"
listing = os.listdir(path)


# getting all path+filename in a list
npath=[]
im=[]

for infile in listing:
  im.append(infile)
  npath.append(os.path.join(path, infile))

#creates a new empty image, RGB mode, and size 400 by 400.
new_im = Image.new('RGB', (2500,3000))

for i in xrange(0,2500,800):
    for j in xrange(0,3000, 500):
        im=Image.open(npath.pop(0))
        im.thumbnail((1000,1000))
        #paste the image at location i,j:
        new_im.paste(im, (i,j))
    new_im.save('/media/test.png')

questionAnswers(2)

yourAnswerToTheQuestion