如何在Pillow中使img.show()成为阻塞调用?

时间:2015-12-22 17:56:41

标签: python pillow

我试图查看由Python Imaging Library生成的图像。在单独的进程中显示图像后,使用以下代码段返回。有没有办法显示图像并让python脚本阻塞直到我关闭窗口?

from PIL import Image
...
img = Image.open(...)
img.show()

我可以使用像Qt这样的GUI库来实现这一目标。我不想添加它只是为了查看图像。

3 个答案:

答案 0 :(得分:1)

使用tk的简单UI窗口可以实现此目的:

from PIL import Image, ImageTk
from tkinter import Tk, Label, BOTH
from tkinter.ttk import Frame, Style

class Example(Frame, object):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.pack(fill=BOTH, expand=1)
        label1 = Label(self)
        label1.photo= ImageTk.PhotoImage(Image.open(r"myImage"))
        label1.config(image=label1.photo)
        label1.pack(fill=BOTH, expand=1)
        parent.mainloop()


Example(Tk())

注意:代码在python 3中,对于python 2,导入会略有不同:

from Tkinter import Tk, Label, BOTH
from ttk import Frame, Style

答案 1 :(得分:1)

Pillow在后台显式启动了Mac和Unix查看器。幸运的是,Pillow还提供了一种注册自定义查看器的方法,以便您可以覆盖此行为。

我个人使用<navbar [pageTitle]="Home Page" ></navbar> <ion-content padding> welcome </ion-content>

feh

答案 2 :(得分:0)

实现阻塞调用的一种间接方法是在matplotlib中显示一个PIL图像:

import matplotlib.pyplot as plt
import numpy as np
import PIL

img = PIL.Image.open("image.jpg")
plt.imshow(np.asarray(img))
plt.show()    # Default is a blocking call