用Python下载的图像已损坏?

时间:2017-02-04 14:14:54

标签: python image urllib2

我尝试下载图片,但由于某些原因它们已损坏?例如:这是我想要的图像。

结果就是这个

我的测试代码是:

import urllib2

def download_web_image(url):
    request = urllib2.Request(url)
    img = urllib2.urlopen(request).read()
    with open ('test.jpg', 'w') as f: f.write(img)

download_web_image("http://upload.wikimedia.org/wikipedia/commons/8/8c/JPEG_example_JPG_RIP_025.jpg")

为什么会这样,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您正在默认(文本)模式下打开'test.jpg'文件,这会导致Python在Windows上使用“正确”的换行符:

  

在文本模式下,读取时的默认值是转换平台特定的   行结尾(在Un​​ix上为\ n,在Windows上为\ r \ n)到\ n。写作时   文本模式,默认是将\ n的出现次数转换回   平台特定的行结尾。

当然,JPEG文件不是文本文件,“修复”换行只会破坏图像。而是以二进制模式打开文件:

with open('test.jpg', 'wb') as f:
    f.write(img)

有关详细信息,请参阅documentation