Python urllib2图像失真

2024-06-01 18:45:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用网站http://placekitten.com制作一个程序,但遇到了一点问题。使用这个:

im = urllib2.urlopen(url).read()
f = open('kitten.jpeg', 'w')
f.write(im)
f.close()

图像会因不匹配的颜色而扭曲,如下所示:

http://imgur.com/zVg64Kn.jpeg

我想知道是否有其他方法可以替代使用urllib2提取图像。如果有人能帮上忙,那就太好了!在


Tags: 图像程序comhttpurlread网站open
3条回答

如果使用Windows,则必须以二进制模式打开文件:

f = open('kitten.jpeg', 'wb')

或者更像Python:

^{pr2}$

改变

f = open('kitten.jpeg', 'w')

阅读

^{pr2}$

有关详细信息,请参见http://docs.python.org/2/library/functions.html#open。所发生的是,jpeg中的新行在保存的过程中被修改,以二进制文件的形式打开将阻止这种情况的发生。在

您需要以二进制模式打开文件:

f = open('kitten.jpeg', 'wb')

否则,Python将把行尾转换为本机平台形式,这是一种破坏二进制数据的转换,如^{} function所述:

The default is to use text mode, which may convert '\n' characters to a platform-specific representation on writing and back on reading. Thus, when opening a binary file, you should append 'b' to the mode value to open the file in binary mode, which will improve portability.

将数据从URL复制到文件时,可以使用^{}高效地处理流式处理:

^{pr2}$

这将以块的形式读取数据,避免用大的二进制数据填充内存。with语句为您处理关闭file对象。在

相关问题 更多 >