我正在尝试通过序列图像制作3x3网格,但似乎无法正确使用它。图像位于文件夹中,命名为0 - 8(共9个图像),最终一个图像网格3x3的输出应如下所示
image0 image1 image2
image3 image4 image5
image6 image7 image8
我试图关注How do you merge images into a canvas using PIL/Pillow?,但无法正常使用。
无需更改图像中的任何内容,只需将它们合并并制作3x3网格
即可答案 0 :(得分:6)
以下是一个如何做到这一点的示例(考虑图像是您的一张图片):
img_w, img_h = image.size
background = Image.new('RGBA',(1300, 1300), (255, 255, 255, 255))
bg_w, bg_h = background.size
offset = (10,(((bg_h - img_h)) / 2)-370)
background.paste(image1,offset)
根据您的要求调整偏移,宽度和高度。
答案 1 :(得分:6)
要从 (cols*img_height, rows*img_width)
个图像中制作任意形状的网格 rows*cols
:
def image_grid(imgs, rows, cols):
assert len(imgs) == rows*cols
w, h = imgs[0].size
grid = Image.new('RGB', size=(cols*w, rows*h))
grid_w, grid_h = grid.size
for i, img in enumerate(imgs):
grid.paste(img, box=(i%cols*w, i//cols*h))
return grid
在您的情况下,假设 imgs
是 PIL
个图像的列表:
grid = image_grid(imgs, rows=3, cols=3)