python - 使用Python PIL库一张一张显示图像

标签 python python-imaging-library

我打算使用Python PIL逐个显示目录中的图像列表(即在下一个图像窗口打开之前关闭上一个图像窗口)。这是我的代码,它似乎不起作用。它会依次打开图像,而不会关闭前一个窗口。

def show_images(directory):
    for filename in os.listdir(directory):
        path = directory + "/" + filename
        im = Image.open(path)
        im.show()
        im.close()
        time.sleep(5)

有人可以帮我解决这个问题吗?我坚持使用PIL库。 谢谢

最佳答案

PIL.show() 调用外部程序来显示图像,将其存储在临时文件中后,可以是 GNOME 图像查看器,如果您使用 iPython 笔记本,甚至可以是内联 matplotlib。

据我从他们的文档中收集的信息PIL在这里,我发现执行此操作的唯一方法是通过 os.system() 调用或子进程调用执行 pkill

所以你可以将你的程序更改为如下所示:

import os
def show_images(directory):
 for filename in os.listdir(directory):
     path = directory + "/" + filename
     im = Image.open(path)
     im.show()
     os.system('pkill eog') #if you use GNOME Viewer
     im.close()
     time.sleep(5)

如果您没有必要专门使用 PIL,您可以尝试切换到其他库(例如 matplotlib)进行显示,如此处所述 Matplotlib ,其中诸如plot.close()之类的简单调用将关闭图窗,而plot.clear()将清除图窗

import matplotlib.pyplot as plt

def show_images(directory):
 for filename in os.listdir(directory):
     path = directory + "/" + filename
     im = Image.open(path)
     plt.imshow(im)
     plt.show()
     plt.clf() #will make the plot window empty
     im.close()
     time.sleep(5)

关于python - 使用Python PIL库一张一张显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41357641/

相关文章:

python - 为什么 Pillow 无法识别 JPEG 格式?

python - 如何在Python中创建法国国旗?

python - 搜索具有特定单词的行

python - 如何删除一个值但将相应的键保留在字典中?

Python:将类定义从一个 .py 导入另一个 .py 时遇到问题

python - R 和 Python 中的线性回归 - 同一问题的不同结果

Python PIL - 划分混合两个图像的功能?

python - 使用Python去噪图像算法

python - 减去下一行使用当前行,python 数据框

python - 将 PIL 图像转换为 numpy 数组有时不起作用