Qwen-Image-3.0 支持哪些图像输入格式

文章导读
Qwen-Image-3.0 能接收哪种图像输入,通常由模型外层封装决定,而不是模型本身单独定义。在本地推理框架(如 Transformers、Diffusers)里,模型一般直接吃解码后的 RGB 数组;在 HTTP 服务里,图像往往以 Base64 字符串或公网 URL 传进去。所以先确认你是在跑本地脚本还是在调 API,再判断格式。
📋 目录
  1. 先分清:本地推理 vs API 调用
  2. 常见格式的技术边界
  3. 自己搭本地推理时,用一段脚本验证
  4. API 接入时,先按 Base64 或 URL 各测一次
  5. 验证清单:按顺序排查
  6. 常见问题
A A

Qwen-Image-3.0 能接收哪种图像输入,通常由模型外层封装决定,而不是模型本身单独定义。在本地推理框架(如 Transformers、Diffusers)里,模型一般直接吃解码后的 RGB 数组;在 HTTP 服务里,图像往往以 Base64 字符串或公网 URL 传进去。所以先确认你是在跑本地脚本还是在调 API,再判断格式。

没有明确文档时,优先准备 JPEG、PNG、WebP 三种常见位图格式。图像通常以 Base64 编码或 URL 方式传输,模型内部会统一转成 RGB 数组再计算。若接口报格式错误,优先检查编码是否完整、文件是否损坏、尺寸是否超限,并用最小测试图逐类验证。

先分清:本地推理 vs API 调用

如果你用 Python 直接加载权重,常见做法是用 PIL 打开图像,再转成 numpy 数组或 tensor。这个环节里,PIL 能打开的文件格式基本就是模型入口支持的格式,比如 PNG、JPEG、BMP、WebP、TIFF。你需要提前做一次 .convert('RGB'),避免出现 RGBA 或灰度图导致维度报错。

如果你走的是 API 接口,服务端一般会定义图像字段为 imageimage_url。有的实现只接受 Base64 字符串,有的同时接受 HTTP/HTTPS 链接。这两种方式对文件格式没有额外限制,因为服务端拿到后再解码,最终都变成像素数组。

常见格式的技术边界

  • JPEG/JPG:最通用,压缩后体积小,但可能有有损压缩痕迹。API 传输时优先选这个,解码快、失败率低。
  • PNG:无损,支持透明通道。若输入带 alpha,注意模型是否需要忽略透明度;通常要转成 RGB。
  • WebP:体积比 JPEG 更小,兼容性中等。如果平台支持,可以直接传;不确认时先转成 PNG/JPEG。
  • BMP/TIFF:本地推理常见,但 API 端不一定支持。建议先压缩转换。
  • GIF、SVG、ICON:GIF 一般只能取第一帧,SVG 必须先栅格化,ICON 极少见。不要直接传原文件。

自己搭本地推理时,用一段脚本验证

如果你能加载模型但不确定格式,可以用下面这个骨架跑一遍。重点是把图片转成模型最终需要的张量格式,不同模型要求略有差异,但核心路径基本一致。

from PIL import Image
import torch

"""
假设你已有 model 和 processor,或者手动做预处理。
这里演示如何从不同格式文件得到 RGB 张量。
"""
def load_as_rgb(path):
    img = Image.open(path)
    img = img.convert("RGB")
    return img

# 逐个测试
for p in ["/tmp/test.jpg", "/tmp/test.png", "/tmp/test.webp", "/tmp/test.bmp"]:
    try:
        im = load_as_rgb(p)
        # 继续走你们模型要求的 preprocess,例如 resize、归一化
        print(p, "-> OK", im.size)
    except Exception as e:
        print(p, "-> FAIL", e)

执行后看哪几个能通过。失败原因通常是“无法识别图像文件”,说明该格式在 PIL 层就解不开;如果是“尺寸过大”或“channel 不匹配”,则需要调整预处理步骤。

Qwen-Image-3.0 支持哪些图像输入格式

API 接入时,先按 Base64 或 URL 各测一次

很多接口支持两种方式,但个别环境只开通其中一种。如果你拿不准,先造一个 1x1 像素的 PNG,分别用 Base64 和 URL 试提交一次。参考请求骨架如下(具体字段名以你的服务端为准):

POST /v1/vision
Content-Type: application/json

{
  "model": "qwen-image-3.0",
  "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+/p9sAAAAASUVORK5CYII="
}

把 Base64 换成下面的 URL 形式,看接口是否识别:

{
  "model": "qwen-image-3.0",
  "image_url": "https://example.com/test.png"
}

如果都返回 200,说明服务端对两种方式都接受。如果其中一个报错,就以可用方式提交。注意 URL 必须是公网可访问的,否则服务端拉取不到图片。

Qwen-Image-3.0 支持哪些图像输入格式

验证清单:按顺序排查

  1. 先确认入口是本地函数还是 HTTP API。
  2. 本地直接用 PIL 打开测试图,确认格式能解码。
  3. API 接口先用 1x1 最小 PNG 试通。
  4. 再换正常尺寸的 JPEG、WebP 各测一次。
  5. 如果某格式报错,把报错信息中的 MIME 类型或编码错误记录,反向调整输入。

常见问题

能传 GIF 动图吗?

通常只能取第一帧。如果模型是视频模型或专门处理动图的,可能有额外通道;普通图像模型不支持多帧输入。

支持 SVG 矢量图吗?

不支持直接输入。SVG 需要先渲染成位图(PNG/JPEG)再传给模型。本地用 cairosvg 或 PIL 的 ImageOpen 按需转换。

图像大小有限制吗?

有限制。API 端常要求图像编码后不超过 20MB,分辨率也要低于模型训练尺寸。用大图前建议先缩放,避免超限后报错。

明确你的部署形态后,先用最小样例验证,再逐步叠加真实图片。如果格式报错,优先检查编码完整性,而不是立刻换另一种格式。这样能最快定位问题。