Python, IOError: cannot identify image file
Python, IOError: cannot identify image file
我知道有很多问题类似的问题,但我认为,没有igual(我认为)。我有一组图像的 urls,我想下载它。但是当我尝试保存图像时出现此错误。我不知道如何让它工作。
这是我的代码:
listOfImagesUrl = ['https://cdn.psychologytoday.com/sites/default/files/blogs/1023/2012/09/105928-103553.jpg', 'http://i.livescience.com/images/i/000/048/264/original/disgusted-101130-02.jpg%3F1324346664', 'http://barfblog.com/wp-content/uploads/images/disgust.story.jpg', 'http://cache1.asset-cache.net/gc/148190074-people-making-disgusted-faces-gettyimages.jpg%3Fv%3D1%26c%3DIWSAsset%26k%3D2%26d%3Dww%252BvNwEe%252BXzLnQze1Z2w9KNDivKR%252BEqGJ2cPfDe1oeinIezLX%252B8y1tIG3LNjTbL5']
imageNumber = 1
for imageUrl in listOfImagesUrl:
file = cStringIO.StringIO(urllib.urlopen(imageUrl).read())
img = Image.open(file)
img.save("/tmp/test/" + str(imageNumber) + "." + img.format)
print "DONE: " + str(imageNumber) + " of " + str(len(listOfImagesUrl))
imageNumber += 1
我使用 sleeplessnerd 对 this Whosebug 问题的回答解决了 url 问题。问题是我必须在 urllib2.
上启用 cookie
我切换到 urllib2
并如图所示重组您的代码以提供更多错误信息。看来你的大部分图片网址都不好。
from urllib2 import urlopen, URLError
from cStringIO import StringIO
from PIL import Image
listOfImagesUrl = [
'http://barfblog.com/wp-content/uploads/images/disgust.story.jpg',
'https://cdn.psychologytoday.com/sites/default/files/blogs/1023/2012/09/105928-103553.jpg',
'http://i.livescience.com/images/i/000/048/264/original/disgusted-101130-02.jpg%3F1324346664',
'http://cache1.asset-cache.net/gc/148190074-people-making-disgusted-faces-gettyimages.jpg%3Fv%3D1%26c%3DIWSAsset%26k%3D2%26d%3Dww%252BvNwEe%252BXzLnQze1Z2w9KNDivKR%252BEqGJ2cPfDe1oeinIezLX%252B8y1tIG3LNjTbL5'
]
for imageNumber, imageUrl in enumerate(listOfImagesUrl, start=1):
try:
url = urlopen(imageUrl)
except URLError as e:
print "skipping {}".format(imageUrl)
print " error: {}".format(e)
continue
file = StringIO(url.read())
img = Image.open(file)
img.save("/tmp/test/" + str(imageNumber) + "." + img.format)
print "DONE: " + str(imageNumber) + " of " + str(len(listOfImagesUrl))
我知道有很多问题类似的问题,但我认为,没有igual(我认为)。我有一组图像的 urls,我想下载它。但是当我尝试保存图像时出现此错误。我不知道如何让它工作。
这是我的代码:
listOfImagesUrl = ['https://cdn.psychologytoday.com/sites/default/files/blogs/1023/2012/09/105928-103553.jpg', 'http://i.livescience.com/images/i/000/048/264/original/disgusted-101130-02.jpg%3F1324346664', 'http://barfblog.com/wp-content/uploads/images/disgust.story.jpg', 'http://cache1.asset-cache.net/gc/148190074-people-making-disgusted-faces-gettyimages.jpg%3Fv%3D1%26c%3DIWSAsset%26k%3D2%26d%3Dww%252BvNwEe%252BXzLnQze1Z2w9KNDivKR%252BEqGJ2cPfDe1oeinIezLX%252B8y1tIG3LNjTbL5']
imageNumber = 1
for imageUrl in listOfImagesUrl:
file = cStringIO.StringIO(urllib.urlopen(imageUrl).read())
img = Image.open(file)
img.save("/tmp/test/" + str(imageNumber) + "." + img.format)
print "DONE: " + str(imageNumber) + " of " + str(len(listOfImagesUrl))
imageNumber += 1
我使用 sleeplessnerd 对 this Whosebug 问题的回答解决了 url 问题。问题是我必须在 urllib2.
上启用 cookie我切换到 urllib2
并如图所示重组您的代码以提供更多错误信息。看来你的大部分图片网址都不好。
from urllib2 import urlopen, URLError
from cStringIO import StringIO
from PIL import Image
listOfImagesUrl = [
'http://barfblog.com/wp-content/uploads/images/disgust.story.jpg',
'https://cdn.psychologytoday.com/sites/default/files/blogs/1023/2012/09/105928-103553.jpg',
'http://i.livescience.com/images/i/000/048/264/original/disgusted-101130-02.jpg%3F1324346664',
'http://cache1.asset-cache.net/gc/148190074-people-making-disgusted-faces-gettyimages.jpg%3Fv%3D1%26c%3DIWSAsset%26k%3D2%26d%3Dww%252BvNwEe%252BXzLnQze1Z2w9KNDivKR%252BEqGJ2cPfDe1oeinIezLX%252B8y1tIG3LNjTbL5'
]
for imageNumber, imageUrl in enumerate(listOfImagesUrl, start=1):
try:
url = urlopen(imageUrl)
except URLError as e:
print "skipping {}".format(imageUrl)
print " error: {}".format(e)
continue
file = StringIO(url.read())
img = Image.open(file)
img.save("/tmp/test/" + str(imageNumber) + "." + img.format)
print "DONE: " + str(imageNumber) + " of " + str(len(listOfImagesUrl))