# 图片生成与编辑

> 通过 BigModel.io 兼容 OpenAI 的 /v1/images/generations 与 /v1/images/edits 接口生成和编辑图片，按张计费，失败的图片不收费。

网页版: https://bigmodel.io/zh-cn/docs/image-generation · 更新于 2026-10-18

图片模型使用 OpenAI Images API。请求会等到图片生成完毕，一次性返回结果。按返回的图片张数计费，生成失败的图片不收费。

| 任务 | 请求 | 计价 |
|---|---|---|
| 文生图 | `POST /v1/images/generations` | 按张 |
| 编辑、改风格、放大或抠图 | `POST /v1/images/edits` | 按张 |

模型 ID 和价格见 [模型目录 → 图像](https://bigmodel.io/zh-cn/models?type=Image)。实际可用的模型取决于 API Key 所在分组，可用 `GET /v1/models` 查看。

## 生成图片

```bash [cURL]
curl https://bigmodel.io/v1/images/generations \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen-image-2.1",
    "prompt": "清晨薄雾笼罩的湖面上漂浮着一盏纸灯笼，灯笼上写着“早安”",
    "size": "1536x1024",
    "n": 1
  }'
```

```python [Python]
import os
from openai import OpenAI

client = OpenAI(base_url="https://bigmodel.io/v1", api_key=os.environ["BIGMODEL_API_KEY"])

result = client.images.generate(
    model="qwen-image-2.1",
    prompt="清晨薄雾笼罩的湖面上漂浮着一盏纸灯笼",
    size="1536x1024",
)
print(result.data[0].url)
```

```js [Node.js]
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://bigmodel.io/v1", apiKey: process.env.BIGMODEL_API_KEY });

const result = await client.images.generate({
  model: "qwen-image-2.1",
  prompt: "清晨薄雾笼罩的湖面上漂浮着一盏纸灯笼",
  size: "1536x1024",
});
console.log(result.data[0].url);
```

返回 `{"created": 1760000000, "data": [{"url": "https://bigmodel.io/v1/media/..."}]}`。链接无需 API Key 即可访问，有效期 24 小时；需要长期保存请下载文件，并且不要公开这个链接。

### 请求字段

| 字段 | 说明 |
|---|---|
| `model` | 必填，图片模型 ID。 |
| `prompt` | 生成时必填；`image-upscale` 等工具模型可不填。 |
| `size` | `宽x高`，如 `1024x1024`、`1536x1024`。它决定画幅比例和清晰度档位：最长边小于 1800 px 为 1K，1800 px 起为 2K，3500 px 起为 4K。以模型自身的上限为准。 |
| `n` | 1 到 4 张，每张单独生成、单独计费。 |
| `response_format` | `url`（默认），或 `b64_json` 直接返回图片数据。 |
| `background` | 支持透明背景的模型（模型说明中注明）可传 `transparent`，返回透明 PNG。 |

这些模型不支持 `stream`。

## 编辑图片

上传一张或多张图片并给出修改要求。输入可以是公开的 `https://` 链接，或 base64 data URI（`data:image/png;base64,...`），单张不超过 50 MB，每次最多 10 张。

```bash [cURL]
curl https://bigmodel.io/v1/images/edits \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen-image-2.1",
    "prompt": "改成下雪的冬日傍晚，保持构图不变",
    "images": [{"image_url": "https://example.com/street.jpg"}]
  }'
```

```python [Python]
import os
from openai import OpenAI

client = OpenAI(base_url="https://bigmodel.io/v1", api_key=os.environ["BIGMODEL_API_KEY"])

with open("street.jpg", "rb") as image:
    result = client.images.edit(
        model="qwen-image-2.1",
        image=image,
        prompt="改成下雪的冬日傍晚，保持构图不变",
    )
print(result.data[0].url)
```

也支持 multipart 上传（字段 `image`，多张用 `image[]`），OpenAI SDK 默认就是这种方式。传入多张图时，第一张是要编辑的图，其余作为参考图。

工具模型只需要输入图片，不需要提示词：`image-upscale` 返回放大后的图片，`image-remove-background` 返回去掉背景的透明图。

## 作为视频首帧

大多数视频模型需要一张首帧。先在这里生成图片，再把它的链接作为 `image` 传给 [`POST /v1/videos`](https://bigmodel.io/zh-cn/docs/video-generation)。

## 验证配置

运行上面的生成示例。返回 `200`，且 `data[0].url` 能打开图片，就说明这个 Key 可以使用图片模型。扣费会在[用量](https://bigmodel.io/usage)中按请求逐条显示。

## 常见问题排查

**404：模型不可用。** 该模型不在 Key 所在分组中。用 `GET /v1/models` 查看，或换用包含图片模型的分组的 Key。

**400 `invalid_request_error`：“An input image could not be read”。** 图片链接不是公开的 `https://`，或 data URI 格式有误、超过 50 MB。

**400：“This model edits images: send an input image”。** 该模型只做编辑，请调用 `/v1/images/edits` 并传入图片。

**400：“n must be at most 4”。** 每次最多生成 4 张。

**502 `upstream_error`。** 图片未能生成，常见原因是提示词或输入图片。能确定原因时消息里会说明。失败的图片不收费。

**403 `billing_error`。** 余额不足，请到[充值](https://bigmodel.io/purchase)页面充值。

## 相关文档

- [视频生成](https://bigmodel.io/zh-cn/docs/video-generation)：让图片动起来。
- [图片输入](https://bigmodel.io/zh-cn/docs/vision)：把图片发给对话模型理解。
- [定价](https://bigmodel.io/zh-cn/pricing)：所有图片模型价格。
