【问题标题】:Why Python on Windows can't read an image in binary mode?为什么 Windows 上的 Python 无法以二进制模式读取图像?
【发布时间】:2011-01-10 17:09:17
【问题描述】:

我想以二进制模式读取图像,以便将其保存到我的数据库中,如下所示:

img = open("Last_Dawn.jpg")
t = img.read()
save_to_db(t)

这适用于 Mac。但是在 Windows 上,img.read() 是不正确的。这只是整个系列中的一小部分。

所以我的第一个问题是:为什么上面的代码在 Windows 中不起作用?

第二个是:有没有其他方法可以做到这一点?

非常感谢!

【问题讨论】:

    标签: python image binary


    【解决方案1】:

    需要以二进制方式打开:

    img = open("Last_Dawn.jpg", 'rb')
    

    【讨论】:

      【解决方案2】:

      你需要告诉 Python 以二进制模式打开文件:

      img = open('whatever.whatever', 'rb')
      

      在此处查看 open 函数的文档:http://docs.python.org/library/functions.html#open

      【讨论】:

        【解决方案3】:

        不能肯定,但我知道 ISO C 标准在调用 fopen 时不区分二进制和非二进制模式,而 Windows 可以

        很可能 Python 代码只是在幕后使用了fopen("Last_Dawn.jpg","r")(因为它是用 C 编写的),并且它是在 Windows 中以非二进制模式打开的。

        这很可能会转换行尾字符 (LF -> CRLF) 以及可能的其他字符。

        如果您自己在 open 语句中将模式指定为“rb”,那应该可以解决它:

        img = open("Last_Dawn.jpg", "rb")
        

        【讨论】:

          【解决方案4】:
          open(filename, 'rb')
          

          【讨论】:

            猜你喜欢
            • 2021-06-12
            • 2011-12-09
            • 2019-08-27
            • 1970-01-01
            • 2011-10-24
            • 1970-01-01
            • 1970-01-01
            • 2019-10-01
            • 2016-10-14
            相关资源
            最近更新 更多