You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用requests下载图片后PIL无法识别的问题求助

问题解决思路

核心问题:你下载的是WEBP格式的图片,但强行保存成了.jpg后缀,导致PIL无法正确识别文件格式。

从你提供的response.content开头b'RIFF...WEBP'就能看出来,这是标准的WEBP文件头,而你给文件命名为0.jpg——虽然本地看图软件能自动识别真实格式,但PIL的Image.open()会严格校验文件格式与后缀的匹配性,所以抛出了UnidentifiedImageError。

两种解决方法

方法1:使用正确的文件后缀保存

直接把保存的文件名改成.webp,PIL支持WEBP格式(若你的PIL版本过老,可能需要额外安装pillow-webp扩展):

修改代码中的文件名部分:

def save_file(image, index):
    # 改用webp后缀
    file = open(f"{index}.webp", "wb")
    file.write(image)
    file.close()

# 调用保存
save_file(image, 0)

# 打开正确后缀的文件
Image.open('0.webp')

方法2:下载后转换为JPG格式保存

如果必须保存为JPG格式,可以用PIL先将WEBP图片转换后再保存:

from io import BytesIO
from PIL import Image
import requests

def get_image(url):
    response = requests.get(url, headers=headers)
    return response.content

url = 'https://http2.mlstatic.com/D_NQ_NP_779386-MLA47939118380_102021-W.webp' 
image_content = get_image(url)

# 用BytesIO读取内容并转换格式
with BytesIO(image_content) as img_buffer:
    with Image.open(img_buffer) as img:
        # 转换为RGB模式(JPG不支持透明通道)
        img.convert('RGB').save('0.jpg', 'JPEG')

# 现在可以正常打开0.jpg了
Image.open('0.jpg')

若执行时提示WEBP格式不支持,运行pip install pillow-webp即可解决格式兼容问题。

内容的提问来源于stack exchange,提问作者Nacho Eigu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:36:19