Python:如何在PIL中获取屏幕截图数据.图像抓取



我可以通过PIL中的ImageGrab.grab()抓取屏幕截图,它返回一个实例,但正如我们所知,我们不能通过套接字发送或接收实例。如何获取屏幕截图的二进制数据?

如果我一开始使用保存方法,然后使用 open(file,'wb'),那么我可以获取二进制数据,但是如果我每秒抓取 24 张图片,它会花费大量的磁盘资源。如何直接获取二进制数据而不是使用保存并打开?

while True:
    screen=ImageGrab.grab()
    screen.save('c:\1.jpeg','jpeg')
    f=open('c:\1.jpeg','wb')
    data=f.read()
    f.close()
    sock.sendto(data,addr)
例如,

您可以将图像序列化为StringIO(内存中文件),例如

mem_file = cStringIO.StringIO()
screen.save(mem_file, 'jpeg')
data = mem_file.getvalue()

.. 然后像这样打开它:

my_img = PIL.Image.open(cStringIO.StringIO(data))

或者使用低级函数,如screen.tostring()/.fromstring() - 加上额外传输几何/模式。

最新更新