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。
我可以在 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。