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

从Amazon S3读取JPG文件时触发PIL.UnidentifiedImageError问题求助

解决boto3读取S3 JPG文件时的PIL.UnidentifiedImageError报错

环境版本

  • boto3: 1.28.3
  • botocore: 1.31.65

原代码

#boto3 version = 1.28.3
#botocore version = 1.31.65

import boto3
from PIL import Image
from io import BytesIO

s3 = boto3.client('s3')
new_obj = s3.get_object(Bucket=bucket, Key="path/to/image_folder/image_3.jpg")
image_dl = new_obj['Body'].read()
image = Image.open(BytesIO(image_dl))

报错信息

PIL.UnidentifiedImageError: Cannot identify image file

解决建议

  • 验证S3对象完整性:通过AWS控制台手动下载该JPG文件,确认文件是否损坏。若文件本身损坏,重新上传正确文件即可。
  • 检查S3对象Key路径:确认path/to/image_folder/image_3.jpg完全正确,注意大小写、必须使用正斜杠/,避免因路径错误下载到非图片文件。
  • 确认文件真实格式:部分文件扩展名是.jpg但实际并非JPG格式,可通过系统工具查看文件真实类型,若格式不符需替换为正确的JPG文件。
  • 校验下载字节流:对比S3控制台显示的对象大小与len(image_dl)是否一致,若不一致说明下载过程数据丢失,可重试下载或检查网络连接。
  • 改用流式处理:避免先读取全部字节,直接使用S3对象流打开图片,代码示例:
    new_obj = s3.get_object(Bucket=bucket, Key="path/to/image_folder/image_3.jpg")
    image = Image.open(new_obj['Body'])
    
  • 升级Pillow库:旧版本Pillow可能对部分JPG编码支持不足,执行pip install --upgrade pillow升级后重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:32:37