如何从python PIL图像对象获取字符串数据?

时间:2012-01-12 04:20:46

标签: python file gif python-imaging-library

我正在尝试通过套接字将桌面的gif文件的数据发送到远程桌面(用于桌面共享)但我无法使用PIL获取数据的字符串,我不知道如何将Pil对象转换为字符串,这是我的代码(顺便说一下,我知道我可以只写一个文件,然后读取这样的数据,但我认为这是低效的,我认为有更好的方法可能吗?)。

    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年我想,我很快就会得到一个新的)。任何意见都表示赞赏。

1 个答案:

答案 0 :(得分:1)

正如@HYRY所说,你必须用“wb”模式而不是“w”打开图像文件 - 没有“b”Python默认以文本模式打开它 - 在windows中它意味着每当一个0x0a字节是写入文件,操作系统写入0x0d 0x0a序列,因为它将行结束序列转换为Windows本机行结尾。

在“wb”模式下,没有翻译,您的图像文件也不会损坏。