我尝试下载图片,但由于某些原因它们已损坏?例如:这是我想要的图像。
结果就是这个
我的测试代码是:
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")
为什么会这样,我该如何解决这个问题?
答案 0 :(得分:2)
您正在默认(文本)模式下打开'test.jpg'文件,这会导致Python在Windows上使用“正确”的换行符:
在文本模式下,读取时的默认值是转换平台特定的 行结尾(在Unix上为\ n,在Windows上为\ r \ n)到\ n。写作时 文本模式,默认是将\ n的出现次数转换回 平台特定的行结尾。
当然,JPEG文件不是文本文件,“修复”换行只会破坏图像。而是以二进制模式打开文件:
with open('test.jpg', 'wb') as f:
f.write(img)
有关详细信息,请参阅documentation。