Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Bạn có thể làm điều gì đó như thế này:

Show
import sys
from PIL import Image

images = [Image.open(x) for x in ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']]
widths, heights = zip(*(i.size for i in images))

total_width = sum(widths)
max_height = max(heights)

new_im = Image.new('RGB', (total_width, max_height))

x_offset = 0
for im in images:
  new_im.paste(im, (x_offset,0))
  x_offset += im.size[0]

new_im.save('test.jpg')

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
2

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
3

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
4

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
5

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?


Việc lồng nhau cho

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
6 đang dán mỗi hình ảnh 5 lần, cách nhau 95 pixel. Mỗi vòng lặp vòng ngoài dán trên trước đó.

for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?
Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?
Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Đã trả lời ngày 14 tháng 5 năm 2015 lúc 2:26May 14, 2015 at 2:26

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Đóng biếndting

37.9k10 Huy hiệu vàng92 Huy hiệu bạc114 Huy hiệu đồng10 gold badges92 silver badges114 bronze badges

7

Tôi sẽ thử điều này:

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )

Nó sẽ hoạt động miễn là tất cả các hình ảnh có cùng một loại (tất cả RGB, tất cả RGBA hoặc tất cả các tầng xám). Không khó để đảm bảo đây là trường hợp với một vài dòng mã nữa. Dưới đây là hình ảnh ví dụ của tôi và kết quả:

Test1.jpg

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Test2.jpg

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Test3.jpg

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Trifecta.jpg:

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Trifecta_vertical.jpg

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Alienkevin

2.1511 Huy hiệu vàng17 Huy hiệu bạc18 Huy hiệu đồng1 gold badge17 silver badges18 bronze badges

Đã trả lời ngày 14 tháng 5 năm 2015 lúc 3:34May 14, 2015 at 3:34

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Dermendermendermen

5.1074 Huy hiệu vàng22 Huy hiệu bạc33 Huy hiệu Đồng4 gold badges22 silver badges33 bronze badges

5

EDIT: Câu trả lời của DTING có thể áp dụng nhiều hơn cho câu hỏi của bạn vì nó sử dụng PIL, nhưng tôi sẽ để lại điều này trong trường hợp bạn muốn biết cách làm điều đó trong Numpy.

Dưới đây là một giải pháp numpy/matplotlib sẽ hoạt động cho N hình ảnh (chỉ hình ảnh màu) của bất kỳ kích thước/hình dạng nào.

import numpy as np
import matplotlib.pyplot as plt

def concat_images(imga, imgb):
    """
    Combines two color image ndarrays side-by-side.
    """
    ha,wa = imga.shape[:2]
    hb,wb = imgb.shape[:2]
    max_height = np.max([ha, hb])
    total_width = wa+wb
    new_img = np.zeros(shape=(max_height, total_width, 3))
    new_img[:ha,:wa]=imga
    new_img[:hb,wa:wa+wb]=imgb
    return new_img

def concat_n_images(image_path_list):
    """
    Combines N color images from a list of image paths.
    """
    output = None
    for i, img_path in enumerate(image_path_list):
        img = plt.imread(img_path)[:,:,:3]
        if i==0:
            output = img
        else:
            output = concat_images(output, img)
    return output

Đây là ví dụ sử dụng:

>>> images = ["ronda.jpeg", "rhod.jpeg", "ronda.jpeg", "rhod.jpeg"]
>>> output = concat_n_images(images)
>>> import matplotlib.pyplot as plt
>>> plt.imshow(output)
>>> plt.show()

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Lena

1251 Huy hiệu bạc10 Huy hiệu đồng1 silver badge10 bronze badges

Đã trả lời ngày 14 tháng 5 năm 2015 lúc 3:03May 14, 2015 at 3:03

derricwderricwderricw

6.4972 Huy hiệu vàng28 Huy hiệu bạc33 Huy hiệu Đồng2 gold badges28 silver badges33 bronze badges

2

Dưới đây là một chức năng khái quát hóa các phương pháp trước đây, tạo ra một lưới hình ảnh trong PIL:

from PIL import Image
import numpy as np

def pil_grid(images, max_horiz=np.iinfo(int).max):
    n_images = len(images)
    n_horiz = min(n_images, max_horiz)
    h_sizes, v_sizes = [0] * n_horiz, [0] * (n_images // n_horiz)
    for i, im in enumerate(images):
        h, v = i % n_horiz, i // n_horiz
        h_sizes[h] = max(h_sizes[h], im.size[0])
        v_sizes[v] = max(v_sizes[v], im.size[1])
    h_sizes, v_sizes = np.cumsum([0] + h_sizes), np.cumsum([0] + v_sizes)
    im_grid = Image.new('RGB', (h_sizes[-1], v_sizes[-1]), color='white')
    for i, im in enumerate(images):
        im_grid.paste(im, (h_sizes[i % n_horiz], v_sizes[i // n_horiz]))
    return im_grid

Nó sẽ thu nhỏ từng hàng và các cột của lưới đến mức tối thiểu. Bạn chỉ có thể có một hàng bằng cách sử dụng pil_grid (hình ảnh) hoặc chỉ một cột bằng cách sử dụng pil_grid (hình ảnh, 1).

Một lợi ích của việc sử dụng PIL trên các giải pháp dựa trên mảng numpy là bạn có thể xử lý các hình ảnh có cấu trúc khác nhau (như hình ảnh dựa trên màu xám hoặc bảng màu).

Ví dụ đầu ra

def dummy(w, h):
    "Produces a dummy PIL image of given dimensions"
    from PIL import ImageDraw
    im = Image.new('RGB', (w, h), color=tuple((np.random.rand(3) * 255).astype(np.uint8)))
    draw = ImageDraw.Draw(im)
    points = [(i, j) for i in (0, im.size[0]) for j in (0, im.size[1])]
    for i in range(len(points) - 1):
        for j in range(i+1, len(points)):
            draw.line(points[i] + points[j], fill='black', width=2)
    return im

dummy_images = [dummy(20 + np.random.randint(30), 20 + np.random.randint(30)) for _ in range(10)]

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
7:

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
8:

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
9:

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Đã trả lời ngày 22 tháng 10 năm 2017 lúc 17:59Oct 22, 2017 at 17:59

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

MaximmaximMaxim

6.7871 Huy hiệu vàng29 Huy hiệu bạc28 Huy hiệu đồng1 gold badge29 silver badges28 bronze badges

1

Dựa trên câu trả lời của DTING, tôi đã tạo ra một hàm dễ sử dụng hơn:

from PIL import Image


def append_images(images, direction='horizontal',
                  bg_color=(255,255,255), aligment='center'):
    """
    Appends images in horizontal/vertical direction.

    Args:
        images: List of PIL images
        direction: direction of concatenation, 'horizontal' or 'vertical'
        bg_color: Background color (default: white)
        aligment: alignment mode if images need padding;
           'left', 'right', 'top', 'bottom', or 'center'

    Returns:
        Concatenated image as a new PIL image object.
    """
    widths, heights = zip(*(i.size for i in images))

    if direction=='horizontal':
        new_width = sum(widths)
        new_height = max(heights)
    else:
        new_width = max(widths)
        new_height = sum(heights)

    new_im = Image.new('RGB', (new_width, new_height), color=bg_color)


    offset = 0
    for im in images:
        if direction=='horizontal':
            y = 0
            if aligment == 'center':
                y = int((new_height - im.size[1])/2)
            elif aligment == 'bottom':
                y = new_height - im.size[1]
            new_im.paste(im, (offset, y))
            offset += im.size[0]
        else:
            x = 0
            if aligment == 'center':
                x = int((new_width - im.size[0])/2)
            elif aligment == 'right':
                x = new_width - im.size[0]
            new_im.paste(im, (x, offset))
            offset += im.size[1]

    return new_im

Nó cho phép chọn một màu nền và căn chỉnh hình ảnh. Nó cũng dễ dàng để làm đệ quy:

images = map(Image.open, ['hummingbird.jpg', 'tiger.jpg', 'monarch.png'])

combo_1 = append_images(images, direction='horizontal')
combo_2 = append_images(images, direction='horizontal', aligment='top',
                        bg_color=(220, 140, 60))
combo_3 = append_images([combo_1, combo_2], direction='vertical')
combo_3.save('combo_3.png')

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Đã trả lời ngày 7 tháng 10 năm 2017 lúc 18:23Oct 7, 2017 at 18:23

Teekarnateeekarnateekarna

9249 Huy hiệu bạc13 Huy hiệu Đồng9 silver badges13 bronze badges

1

Nếu tất cả các chiều cao của hình ảnh đều giống nhau,

import numpy as np

imgs = ['a.jpg', 'b.jp', 'c.jpg']
concatenated = Image.fromarray(
  np.concatenate(
    [np.array(Image.open(x)) for x in imgs],
    axis=1
  )
)

Có lẽ bạn có thể thay đổi kích thước hình ảnh trước khi kết hợp như thế này,

for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
0

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Ghost Ops

1.6772 huy hiệu vàng11 Huy hiệu bạc22 Huy hiệu đồng2 gold badges11 silver badges22 bronze badges

Đã trả lời ngày 27 tháng 3 năm 2019 lúc 22:29Mar 27, 2019 at 22:29

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

PLHNPLHNplhn

4.7574 Huy hiệu vàng43 Huy hiệu bạc47 Huy hiệu đồng4 gold badges43 silver badges47 bronze badges

1

Đây là giải pháp của tôi:

for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
1

Đối với những hình ảnh này:

for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
2

Kết quả sẽ giống như:


for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
3

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?


for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
4

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?


for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
5

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Đã trả lời ngày 12 tháng 1 năm 2020 lúc 14:26Jan 12, 2020 at 14:26

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Mikhail Gerasimovmikhail GerasimovMikhail Gerasimov

34.2K16 Huy hiệu vàng107 Huy hiệu bạc152 Huy hiệu đồng16 gold badges107 silver badges152 bronze badges

for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
6

Đã trả lời ngày 16 tháng 3 năm 2018 lúc 9:56Mar 16, 2018 at 9:56

Raj Yadavraj YadavRaj Yadav

8,5616 Huy hiệu vàng32 Huy hiệu bạc29 Huy hiệu đồng6 gold badges32 silver badges29 bronze badges

for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
7

Đầu ra

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Đã trả lời ngày 7 tháng 9 năm 2018 lúc 7:58Sep 7, 2018 at 7:58

Ngoài ra còn có skimage.util.montage để tạo ra một đoạn phim hình ảnh có cùng hình dạng:

for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
8

Đã trả lời ngày 14 tháng 7 lúc 11:07Jul 14 at 11:07

moi moimoi

1.6772 Huy hiệu vàng16 Huy hiệu bạc24 Huy hiệu đồng2 gold badges16 silver badges24 bronze badges

Chỉ cần thêm vào các giải pháp đã được đề xuất. Giả sử cùng chiều cao, không thay đổi kích thước.

for elem in list_im:
  for i in xrange(0,444,95):
    im=Image.open(elem)
    new_im.paste(im, (i,0))
  new_im.save('new_' + elem + '.jpg')
9

Đã trả lời ngày 6 tháng 9 năm 2018 lúc 20:14Sep 6, 2018 at 20:14

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?

Giải pháp của tôi sẽ là:

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
0

Đã trả lời ngày 3 tháng 6 năm 2020 lúc 13:20Jun 3, 2020 at 13:20

AvralavralAvral

197 Huy hiệu Đồng7 bronze badges

import numpy as np
import PIL
from PIL import Image

list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs    = [ 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([i.resize(min_shape) for i in imgs])

# save that beautiful picture
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta.jpg' )    

# for a vertical stacking it is simple: use vstack
imgs_comb = np.vstack([i.resize(min_shape) for i in imgs])
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( 'Trifecta_vertical.jpg' )
1

Đã trả lời ngày 13 tháng 10 lúc 7:10Oct 13 at 7:10

Hướng dẫn how do i combine multiple images in python? - làm cách nào để kết hợp nhiều hình ảnh trong python?