PIL.show()调用一个外部程序来显示图像,然后将其存储在一个临时文件中,如果您使用的是iPython笔记本,则可以是GNOME图像查看器,甚至可以是内联matplotlib.
从我在这里的文档PIL中收集的信息中,我看到做到这一点的唯一方法是通过os.system()调用或子进程调用进行杀伤.
因此,您可以将程序更改为以下内容:
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()之类的简单调用将关闭图形并进行绘图. 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)