这类问题我又碰上了一次。DashScope 上跑 qwen2.5-vl-72b-instruct,传一张 6000×4000 的商品图,返回 400 并提示 image too large,文档里写最长边 8192,但同一张图缩到 4000 宽仍然偶发失败。

第一反应是「缩图用了最近邻插值,噪点多导致模型侧二次放大」,验证下来不成立。

这类报错背后常见的原因有几处,逐个排除就行。像素总数有上限,长边合规不代表总像素合规;图片以 base64 传,文件体积超过请求体限制被前置网关拦掉;多图请求里每张都按最大尺寸算,累计超出配额。

量出图片的真实尺寸与像素总数

python -c "from PIL import Image;im=Image.open('sku.jpg');print(im.size, im.size[0]*im.size[1])"

随后按长边 2048 等比缩放并转 jpeg 再试

python -c "from PIL import Image;im=Image.open('sku.jpg').convert('RGB');im.thumbnail((2048,2048),Image.LANCZOS);im.save('sku_s.jpg',quality=88)"

再往下用 file 参数走本地路径上传,绕开 base64 体积

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation -H "Authorization: Bearer $DASHSCOPE_KEY" -H 'Content-Type: application/json' -d @req_file.json

末了把多图请求拆成单图逐张描述最后合并

python vl_batch.py --one-by-one --max-side 2048

恢复的判定其实很直接。同一张图缩放后返回 200,输出里能给出商品的主体与背景描述,连续 20 张抽样请求零失败。

这类报错说的是像素量而不是文件大小,先算 width×height 再看体积,两个上限里先撞到的那个才是真原因。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189