Python PIL显示灰色窗口

时间:2018-02-20 09:43:54

标签: android python adb python-imaging-library

我正在尝试从ADB获取android截图并使用Python和PIL在窗口中显示它们(它可能是Pillow,我不确切知道)

代码非常简单:

class Viewer(object):
    def __init__(self):
        self.root = Tkinter.Tk()
        self.root.title('ADB connection')

        self.pane = None
        self.update()
        self.root.mainloop()

    def update(self):
        with open(os.devnull, 'w') as nul:
            subprocess.check_call([adb, adb_option, 'shell', 'screencap -p /sdcard/scr.png'])
            subprocess.check_call([adb, adb_option, 'pull', '/sdcard/scr.png'], stdout=nul)

        tkimg = ImageTk.PhotoImage(Image.open('scr.png'))

        if not self.pane:
            self.pane = Tkinter.Label(self.root, image = tkimg)
            self.pane.pack()

        else:
            self.pane.configure(image = tkimg)
        self.root.after(timeout, self.update)

我找到了很多指南,代码在各处大致相同。

在我的情况下它不起作用:加载图像,宽度和高度匹配,并显示正确尺寸的窗口,但不显示图像。该文件存在,并包含实际的屏幕截图。如果我调试程序,图像对象似乎是好的(至少是大小,我无法读取图像数据)

解码或显示PNG数据似乎是一个问题。或者我可能缺少一些参数或一些函数调用?

1 个答案:

答案 0 :(得分:0)

我终于明白了这个问题:python在显示之前就是垃圾收集图像。

我已将tkimg更改为self.tkimg,现在可以正常使用。

非常感谢。