使用来自URL响应的PIL来打开特定图像的问题

时间:2019-02-07 06:57:31

标签: python-3.x python-imaging-library bytesio

我正在做一些操作,然后从URL抓取图像,然后将其保存到磁盘。这适用于大量大多数图像,但是某些图像URL尽管在浏览器中加载正常,但仍会失败。我查找了错误跟踪,但是这里的各种修补程序都没有运气。以下是提取为失败的URL的示例。

  

OSError:无法识别图像文件<...的io.BytesIO对象...>

from PIL import Image
import requests
from io import BytesIO

urlString = "http://lcl3.com/chemStructures1/A-10400.JPG"
response = requests.get(urlString,headers={'User-Agent': 'Mozilla/5.0'},timeout=10)
img = Image.open(BytesIO(response.content)) #check that it is an image; fails here
rgb_im = img.convert('RGB')
basewidth = 450
wpercent = (basewidth/float(rgb_im.size[0]))
if float(rgb_im.size[0]) > 450:                     
    hsize = int((float(rgb_im.size[1])*float(wpercent)))
    img = img.resize((basewidth,hsize), Image.ANTIALIAS)
    rgb_im.save(image_folder / image_file_name,optimize=True,quality=95)

我认为文件的格式不同。为了获得更多参考,该行在以下位置失败:

响应= request.get(urlString,headers = {'User-Agent':'Mozilla / 5.0'},timeout = 10)

并给出以上跟踪。我敢肯定这可能是单线的,但是我已经把头发扯了一下,所以任何想法都值得赞赏!

编辑:

我发现更多链接失败。例如

  

http://www.excelscientific.com/sealplate.jpg
  https://www.bioexpress.com/stibo/web/std.lang.all/52/52/4695252.jpg

我查看了源代码,无法区分任何差异(这些页面上的图像似乎没有任何“内容”,所以我更加确定这是图像格式问题。

0 个答案:

没有答案