在Jupyter Notebook中将Python PIL.Image.Image显示为图像网格列表

时间:2018-06-29 14:27:11

标签: python jupyter-notebook python-imaging-library

我有一个名为all_images的PIL.Image.Image对象的Python列表,如下所示:

[<PIL.Image.Image image mode=RGB size=192x256 at 0x10855CF8>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x1053AE10>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x106445C0>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x10644E48>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x10644BE0>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x10644C18>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x106447F0>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x146D32B0>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x146D37F0>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x146D3EB8>,
 <PIL.Image.Image image mode=RGB size=192x256 at 0x146D3668>]

我想像在tutorial中那样,将它们全部显示在漂亮的网格中。在本教程中,他只是将图像保存到磁盘。我想在Jupyter笔记本中显示它们。

当我执行Image.open(all_images[0])时,出于某种原因它会在Photoshop中打开。我也尝试过

from IPython.display import Image 
Image(all_images[0])

但是PIL.Image.Image是无效的输入。

2 个答案:

答案 0 :(得分:2)

您可以使用IPyPlot package来节省一些麻烦。 使用IPyPlot,您可以显示具有以下简单内容的图像(numpy.arrays,PIL对象或只是URI):

import ipyplot

ipyplot.plot_images(images_list)

enter image description here

答案 1 :(得分:0)

您可以做的是创建自己的Image对象网格,将其保存为.png.jpeg / .jpg,然后使用其他程序包将其显示。

使用PIL,您可以创建一个新的Image对象,并将各个Image对象粘贴到该对象上。例如,假设您要使用4x4网格。您创建了Imagewidth=4*width_of_smaller_image的新height=4*height_of_smaller_image。然后,从all_imagespaste适当的像素位置上循环。