Python:How 我可以在 PIL.ImageGrab 中获取屏幕截图数据吗?

Python:How can I get screenshot data in PIL.ImageGrab?

我可以在 PIL 中通过 ImageGrab.grab() 抓取屏幕截图,它是 returns 一个实例,但正如我们所知,我们无法通过 socket.How 发送或接收实例获取截图的二进制数据?

如果我先用save方式,然后用open(file,'wb')就可以得到二进制数据,但是如果我每次抓取24张图片,会占用很多磁盘资源second.How 我可以直接获取二进制数据而不是使用保存和打开吗?

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() 这样的低级函数 - 加上额外的 geometry/mode。