Python 图片生成并保存结果

更新于 ;软件与模型验证范围见正文。

第 1 步:准备依赖和令牌

进入 apizt 控制台 → API 令牌 → 新建,选择支持目标模型及协议的分组,设置额度后复制令牌。已有令牌可继续使用;模型目录和权限不是同一回事。查看创建分组令牌的图文步骤。

python3 -m pip install requests
export tokenba_API_KEY="YOUR_tokenba_API_KEY"

本次 macOS 26.3、requests 2.33.1,gpt-image-2 真实生成成功。尺寸、质量和费用按该模型分组支持核对,不自动重试创建请求。

第 2 步:生成图片并保存

下载完整 Python 示例 generate-image.py;这是可运行代码,令牌通过环境变量读取,不是含凭据的配置模板。

import base64
import os
from pathlib import Path
from urllib.parse import urlparse

import requests


def save_image(item, output_dir):
    if item.get("b64_json"):
        data = base64.b64decode(item["b64_json"], validate=True)
    elif item.get("url"):
        if urlparse(item["url"]).scheme != "https":
            raise ValueError("Expected an HTTPS image URL")
        response = requests.get(item["url"], timeout=(10, 120))
        response.raise_for_status()
        data = response.content
    else:
        raise ValueError("No b64_json or url in image result")
    if data.startswith(b"\x89PNG\r\n\x1a\n"):
        suffix = ".png"
    elif data.startswith(b"\xff\xd8\xff"):
        suffix = ".jpg"
    elif data[:4] == b"RIFF" and data[8:12] == b"WEBP":
        suffix = ".webp"
    else:
        raise ValueError("Unexpected image format; inspect the response")
    output_dir = Path(output_dir)
    output_dir.mkdir(parents=True, exist_ok=True)
    target = output_dir / ("tokenba-result" + suffix)
    target.write_bytes(data)
    return target


def main():
    response = requests.post(
        "https://api.apizt.com/v1/images/generations",
        headers={"Authorization": "Bearer " + os.environ["tokenba_API_KEY"]},
        json={
            "model": "gpt-image-2",
            "prompt": "A small friendly blue whale on a clean white background, flat illustration, no text.",
            "n": 1,
            "size": "1024x1024",
            "quality": "low",
        },
        timeout=(10, 150),
    )
    response.raise_for_status()
    result = response.json()
    if not result.get("data"):
        raise ValueError("Empty image data")
    print(save_image(result["data"][0], "output"))
    print("usage:", result.get("usage"))


if __name__ == "__main__":
    main()

第 3 步:查看真实结果与用量

gpt-image-2 通过 apizt 真实生成的蓝色鲸鱼
2026-09-28 真实生成结果;HTTP 200,保存成功。实际图片 1254×1254,请求 size=1024x1024,尺寸未完全一致。
POST /v1/images/generations
model: gpt-image-2
HTTP 200
saved image: 862097 bytes
usage: input_tokens=21, output_tokens=765, total_tokens=786

图片以实际格式保存为 .png/.jpg/.webp。返回 URL 时立即下载,不把 URL 当永久存储;下载媒体时不转发 apizt Key。

失败时检查

现象处理
401 / 模型不可用检查 Key、权限和分组
400 / 规格不支持按当前模型参数确认 size、quality 和数量
没有 choicesImages 返回 data[].b64_json 或 data[].url,不是聊天 choices
超时先查控制台是否已生成并产生用量,避免重复创建

接口与费用

Images 请求与返回参数 · 图片编辑 · 计价单位 · 真实调用记录。

开始实践:注册并创建 API Key · 已有账号,进入控制台 · 查看当前模型价格。