我试图通过套接字将桌面的gif文件的数据发送到远程桌面(用于桌面共享),但使用PIL无法获取数据的字符串,我不知道如何将PIL对象转换为string,这是我的代码(顺便说一句,我知道我可以只写一个文件,然后像那样读取数据,但我认为这是低效的,我认为还有更好的方法吗?)。在
from PIL import ImageGrab
import cStringIO
fakie = cStringIO.StringIO()
ImageGrab.grab().save(fakie, 'GIF')
data = fakie.getvalue()
fakie.close()
# This last bit of code is to see if the var data stored the right info in a str bc i need to send it through a socket
with open('C:\something\something\Desktop\image.gif', 'w') as f:
f.write(data)
问题是,文件写完后,gif图片只显示页面的前1/10(gif文件一团糟),所以我想知道问题是出在我的电脑还是我的代码(我在一台非常旧的电脑上使用vista,我想至少6年了,我很快就会有新的)。感谢您的任何意见。在
正如@HYRY所说,您必须以“wb”模式而不是“w”打开图像文件,而不是“w”—Python默认以文本模式打开它—在windows中,这意味着每当向文件中写入0x0a字节时,O.S.会写一个0x0d 0x0a序列,因为它将行结束序列转换为windows原生行结尾。在
在“wb”模式下,没有翻译,您的图像文件也不会损坏。在
相关问题 更多 >
编程相关推荐