[英]Python:How can I get screenshot data in PIL.ImageGrab?
I can grab a screenshot through ImageGrab.grab() in PIL,it returns an instance,but as we know,we can't send or recv an instance via socket.How to get the binary data of screenshot? 我可以通过PIL中的ImageGrab.grab()抓取一个屏幕快照,它返回一个实例,但是众所周知,我们无法通过套接字发送或接收实例。如何获取屏幕快照的二进制数据?
if I use save method at first,then use open(file,'wb') then I can get the binary data,but it will cost a lot of disk resources if I grab 24 pictures per second.How can I get binary data directly instead of use save and open? 如果首先使用save方法,然后使用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)
You can eg serialize the image into a StringIO
(in-memory file) like 您可以例如将图像序列化为StringIO
(内存文件),例如
mem_file = cStringIO.StringIO()
screen.save(mem_file, 'jpeg')
data = mem_file.getvalue()
.. and later open it like: ..然后像这样打开它:
my_img = PIL.Image.open(cStringIO.StringIO(data))
Or use low-level functions like screen.tostring()
/ .fromstring()
- plus transfer the geometry/mode extra. 或使用诸如screen.tostring()
/ .fromstring()
类的底层函数- .fromstring()
额外转移几何/模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.