Объедините несколько разных изображений из каталога в холст размером 3х6
Я перехожу к изображениям каталога. Я хочу из этих изображений создать холст 3х6, новое изображение, которое будет отображать изображения этого каталога рядом в одно изображение / холст. Каждое изображение должно быть другим изображением. Бок о бок. -
У меня есть следующий код. Он пытается прочитать имена файлов изображений из каталога, которые хранятся в списке. Затем он пытается скопировать / объединить каждое изображение в холст 3х6. Однако желаемого результата не бывает. Что я делаю не так?
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')
Решение
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')