我想使用this answer中的代码将5个png图形组合成一个png或jpg文件。我希望最终的数字看起来像这样:

而且pngs不应该调整大小。我使用了concatenate函数:
import numpy as np
from PIL import Image
imgs = ['pics/myfig1.png',
'pics/myfig2.png',
'pics/myfig3.png',
'pics/myfig4.png',
'pics/myfig5.png']
concatenated = Image.fromarray(
np.concatenate(
np.array([
[imgs[0], imgs[1], imgs[2]],
[imgs[3], imgs[4]]])
)
)
concatenated.save( 'finalfig.jpg' )但是我得到了这个错误:
raise TypeError("Cannot handle this data type: %s, %s" % typekey) from e
TypeError: Cannot handle this data type: (1, 1), <U44发布于 2021-08-13 07:00:20
连接是一个数组操作。它将多个数组合并为一个数组。每个图像都可以看作是一个具有高度x宽度x num_channels形状的数组(而不是高度和宽度被交换)。
如果我拍摄3张200 x 100像素的灰度图像,我会得到3个100 x 200 x 1的阵列。如果我将它们连接起来,我会得到1个100 x 200 x 3的阵列。这个连接的图像可以是200 x 100的彩色(RGB)图像。
但如果你有5个图像,这是不可能的,因为图像要么是灰色(1),要么是RGB (3)或RGBA (4)。
如果你想将多个图像一个接一个地放到一个更大的图像中,需要为枕头图像使用https://pillow.readthedocs.io/en/stable/reference/Image.html,或者为opencv/numpy图像使用tomni.img_paste
https://stackoverflow.com/questions/68765906
复制相似问题