||

GPT Image 2.6 Sunburst 制作 GIF 的尺寸详解:4 种拼图布局与 2-16 帧尺寸上限

GPT Image 2.6 Sunburst 制作 GIF 的尺寸详解:4 种拼图布局与 2-16 帧尺寸上限

作者注:用 GPT Image 2.6 Sunburst 生成 GIF 时,size 指的是单帧尺寸,真正的限制作用在所有帧拼成的拼图上。本文用表格逐项拆解这些规则,并给出各帧数下可用的尺寸上限。

很多开发者第一次用 gpt-image-2.6-sunburst 做 GIF 时会遇到这样的情况:size 设成 1024×1024、帧数只设 2 帧,接口却直接返回 400。原因是 GIF 的尺寸规则和静态图不同。本文介绍 “单帧尺寸 → 拼图布局 → 拼图约束”三步换算法,帮你判断任意一组 size 和 frame_count 能不能通过校验。

这不是参数说明的简单翻译。 文中的边界值来自 2026-11-09 在官转链路上的实测口径,表里的每一个上限都给出了推算过程,你可以自己复核。

核心价值:读完本文,你能根据帧数选出合适的单帧尺寸,避开 GIF frames exceed the total request pixel budget 这类报错,并知道在 512×512、768×768、960×960 之间怎么取舍。

gpt-image-2-6-sunburst-gif-size-guide-image-0


GPT Image 2.6 Sunburst GIF 尺寸核心要点

先用一张表看清 GIF 生成涉及的关键规则,后面再逐条展开。

要点 说明 对你的影响
size 是单帧尺寸 size 表示每一帧的宽高,不是成片尺寸 实际校验对象是拼图,不能按单帧大小估算
所有帧共享一张拼图 模型先把每一帧画进同一张 sprite sheet,再切成 GIF 帧数越多,单帧能用的尺寸越小
拼图布局固定 2–8 帧用 4×2,9 帧用 3×3,10–12 帧用 4×3,13–16 帧用 4×4 2 帧和 8 帧占用的拼图面积相同
宽高须为 16 的倍数 size 可传 auto,或宽高都是 16 倍数的 WIDTHxHEIGHT 832、816、720 这类值才合法
超界返回 400 报错中 param 为 size 遇到报错优先检查拼图尺寸

GPT Image 2.6 GIF 的拼图生成机制

GPT Image 2.6 Sunburst 生成 GIF 的过程分两步:先按固定网格把所有帧画进一张大图,再把大图切成单帧,按 frame_duration_ms 合成动画。所以尺寸限制不看单帧,而是看这张拼图的单边长度、总像素数和长短边比例。

布局按帧数分档,不按实际帧数紧凑排列。比如 frame_count 设为 2,系统仍然使用 4×2 布局。参考资料里的例子可以证明这一点:2048×2048 的单帧只要 2 帧,拼图就需要 8192×4096。估算时一定要用“布局的格子数”,不能用“实际帧数”。

GPT Image 2.6 GIF 基础参数解读

除了 size,GIF 还有两个专属参数:frame_count 控制帧数,frame_duration_ms 控制每帧停留时长。总时长等于帧数乘以每帧时长。例如 2 帧 × 100ms 就是 0.2 秒的循环。

参数 官方范围与默认值 详细说明
frame_count 2–16,默认 9 帧数越多,耗时和费用通常越高;超出范围不报错,会回退到默认值
frame_duration_ms 20–2000ms,默认 200ms 按 10ms 取整;默认组合是 9 帧 × 200ms = 1.8 秒
size auto 或 WIDTHxHEIGHT 宽高都必须是 16 的倍数,表示单帧尺寸
output_format 设为 "gif" frame_count 和 frame_duration_ms 只对 GIF 生效
quality 如 low 等 做低成本测试时建议用 low

frame_count 的越界行为需要特别注意。传 1 或 17 时,接口不会返回 400,而是丢掉 frame_count 和 frame_duration_ms,回退到默认的 9 帧、1.8 秒。也就是说,请求“成功”了,结果却不是你想要的。这种情况必须在生成后用工具核对实际帧数,具体做法见快速上手部分。

gpt-image-2-6-sunburst-gif-size-guide-image-1


GPT Image 2.6 Sunburst GIF 尺寸边界详解

这一节是全文重点。把拼图的约束和布局规则放在一起,就能推出每个帧数档位的尺寸上限。

GPT Image 2.6 拼图的四项约束

约束 边界值 解读
拼图单边 ≤ 3840 拼图的宽和高都不能超过 3840 像素
拼图总像素上限 ≤ 8,294,400 等于 3840×2160,也就是一张 4K 画面的像素量
拼图总像素下限 ≥ 约 655,360 实测 589,824 被拒,665,856 通过
拼图长短边比 ≤ 3:1 拼图过于狭长会被拒绝
帧尺寸 宽、高都是 16 的倍数 不满足时无法作为合法 size

上限部分比较好理解。单边 3840 和总像素 8,294,400 是两道独立的关卡,必须同时满足。帧数少时,拼图的宽通常先碰到单边限制;帧数多时,总像素通常先用完。

下限经常被忽略。实测被拒的 589,824 正好是 768×768,对应 9 帧、单帧 256×256 的 3×3 拼图。通过的 665,856 是 816×816,对应 9 帧、单帧 272×272。由此推算,单帧太小又碰上格子少的布局,也可能因为拼图太小被拒。例如 4×2 布局配 256×256 单帧,拼图只有 1024×512,合计 524,288 像素,低于下限。所以“缩小尺寸省钱”这条路也有底线。

长短边比的影响在非方形帧上比较明显。按 4×2 布局推算,单帧为 16:9 时,拼图宽高比约为 3.56:1,超过 3:1;换到 3×3 或 4×4 布局后比例会降下来。这一点是根据规则推算的,建议上线前实测确认。

GPT Image 2.6 各帧数的方形单帧上限

下面的上限按“方形单帧 + 宽高为 16 的倍数”计算,可以直接拿来查。

帧数 布局 方形单帧上限 推算过程
2–8 4×2 960×960 受单边限制:4×960 = 3840;总像素 7,372,800,在预算内
9 3×3 960×960 9×960² = 8,294,400,正好用满预算
10–12 4×3 816×816 12×832² = 8,306,688,超出 12,288 像素被拒,退到 816
13–16 4×4 720×720 16×720² = 8,294,400,正好用满预算

有两个细节需要说明。

  • 10–12 帧按 12 格计算:布局是 4×3,即使只要 10 帧,拼图也按 12 个格子占用像素。实测中 12 帧、832² 只超出 12,288 像素就被拒,说明预算是严格执行的。
  • 2–8 帧受单边限制:这一档总像素还有余量,但拼图宽是单帧宽的 4 倍,所以 960 已经是上限。1024 会让拼图宽变成 4096。

gpt-image-2-6-sunburst-gif-size-guide-image-2

GPT Image 2.6 常用尺寸怎么选

把上面的上限换成实际选型,可以得到下面几条结论:

单帧尺寸 可用帧数 拼图示例 适用建议
512×512 2–16 帧全部可用 16 帧时 2048×2048 最稳的选择,适合表情包、图标动效、批量生成
768×768 最多 12 帧 12 帧时 3072×2304 16 帧时拼图 3072×3072 = 9,437,184,超出预算
960×960 最多 9 帧 9 帧时 2880×2880 需要大画面且帧数不多时使用
1280×720 9 帧 3840×2160 宽画面方案,拼图正好用满单边和预算
1024×1024 任何帧数都不可用 2–8 帧时宽 4096 9 帧超预算,其余档位超单边
2048×2048 任何帧数都不可用 2 帧时 8192×4096 远超所有限制

1024×1024 在静态图里很常用,在 GIF 里却完全不可用。2–8 帧和 10–12 帧时,拼图宽是 4096,超过 3840;9 帧时拼图是 3072×3072,总像素 9,437,184,超出预算;13–16 帧时拼图宽也是 4096。所以从静态图迁移到 GIF 时,第一件事就是把默认尺寸改小。

如果需要横向画面,推荐 9 帧配 1280×720。此时拼图是 3×3 布局,正好 3840×2160,长短边比 16:9,三项约束都满足。

💡 选型建议:尺寸上限是按规则计算的结果,模型侧可能调整预算。上线前建议在 API易 apiyi.com 上用 quality: "low" 跑一组边界测试,用最低成本确认你常用的尺寸组合。


GPT Image 2.6 Sunburst GIF 快速上手

GPT Image 2.6 GIF 极简示例

下面是参考资料中的低成本示例:2 帧、每帧 100ms、总时长 0.2 秒,生成一个黄色圆形右移再回到原位的循环动画。frame_count 等是 GIF 专属字段,这里直接用 requests 发 JSON,最直观。

import base64, requests

resp = requests.post(
    "https://api.apiyi.com/v1/images/generations",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "model": "gpt-image-2.6-sunburst",
        "prompt": "A minimal two-frame looping animation of a yellow circle moving slightly right and returning to its starting position on a plain white background, no text, seamless loop.",
        "output_format": "gif",
        "quality": "low",
        "size": "512x512",
        "frame_count": 2,
        "frame_duration_ms": 100,
        "n": 1,
    },
    timeout=300,
)
resp.raise_for_status()
open("circle.gif", "wb").write(base64.b64decode(resp.json()["data"][0]["b64_json"]))

写提示词时,要描述清楚三件事:主体是什么、怎么运动、怎么循环。例如“回到起始位置”“seamless loop”这类描述,能让首尾帧衔接得更自然。

GPT Image 2.6 GIF 尺寸预检与完整实现

生产环境建议在请求前先做本地预检,提前拦截不合法的尺寸,节省一次 400 往返。下面的代码把本文的布局表和约束写成函数,同时兼容生成接口和编辑接口。

查看完整实现代码(含尺寸预检)
import base64
import requests
from typing import Optional

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com/v1"  # API易 OpenAI 兼容接口

MAX_EDGE = 3840
MAX_PIXELS = 8_294_400   # 3840 x 2160
MIN_PIXELS = 655_360     # 实测下限附近,仅作预警
MAX_RATIO = 3.0


def sheet_layout(frame_count: int) -> tuple[int, int]:
    """按帧数返回固定拼图布局 (列, 行)"""
    if 2 <= frame_count <= 8:
        return 4, 2
    if frame_count == 9:
        return 3, 3
    if 10 <= frame_count <= 12:
        return 4, 3
    if 13 <= frame_count <= 16:
        return 4, 4
    raise ValueError("frame_count 必须在 2-16 之间,否则会被静默回退到 9 帧")


def check_gif_size(width: int, height: int, frame_count: int) -> list[str]:
    """返回问题列表,空列表表示预检通过"""
    issues = []
    if width % 16 or height % 16:
        issues.append("宽高必须是 16 的倍数")
    cols, rows = sheet_layout(frame_count)
    sw, sh = cols * width, rows * height
    total = sw * sh
    if max(sw, sh) > MAX_EDGE:
        issues.append(f"拼图 {sw}x{sh} 单边超过 {MAX_EDGE}")
    if total > MAX_PIXELS:
        issues.append(f"拼图总像素 {total:,} 超过 {MAX_PIXELS:,}")
    if total < MIN_PIXELS:
        issues.append(f"拼图总像素 {total:,} 低于约 {MIN_PIXELS:,},可能被拒")
    if max(sw, sh) / min(sw, sh) > MAX_RATIO:
        issues.append(f"拼图长短边比 {max(sw, sh) / min(sw, sh):.2f} 超过 3:1")
    return issues


def create_gif(
    prompt: str,
    size: str = "512x512",
    frame_count: int = 9,
    frame_duration_ms: int = 200,
    quality: str = "low",
    image_url: Optional[str] = None,
    out_path: str = "output.gif",
) -> str:
    w, h = map(int, size.lower().split("x"))
    problems = check_gif_size(w, h, frame_count)
    if problems:
        raise ValueError("尺寸预检未通过: " + "; ".join(problems))

    payload = {
        "model": "gpt-image-2.6-sunburst",
        "prompt": prompt,
        "output_format": "gif",
        "quality": quality,
        "size": size,
        "frame_count": frame_count,
        "frame_duration_ms": frame_duration_ms,
        "n": 1,
    }
    endpoint = "images/generations"
    if image_url:  # 编辑接口:第一张图作为动画主体
        endpoint = "images/edits"
        payload["images"] = [{"image_url": image_url}]

    resp = requests.post(
        f"{BASE_URL}/{endpoint}",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json=payload,
        timeout=600,
    )
    if resp.status_code == 400:
        raise RuntimeError(f"参数被拒(多为 size 超界): {resp.text}")
    resp.raise_for_status()

    item = resp.json()["data"][0]
    if item.get("b64_json"):
        data = base64.b64decode(item["b64_json"])
    else:
        data = requests.get(item["url"], timeout=120).content
    with open(out_path, "wb") as f:
        f.write(data)
    return out_path


if __name__ == "__main__":
    print(check_gif_size(768, 768, 16))   # 预期:总像素超预算
    print(check_gif_size(1280, 720, 9))   # 预期:[] 通过
    create_gif(
        prompt="让这只猫跳一小段舞,纯色背景,固定镜头,最后一个动作回到起始姿势",
        size="512x512",
        frame_count=16,
        frame_duration_ms=100,
        image_url="https://example.com/cat.png",
        out_path="cat_dance.gif",
    )

用 ffprobe 核对 GPT Image 2.6 GIF 的实际帧数

frame_count 越界时会静默回退到 9 帧,所以批量任务里最好加一步实际帧数校验:

ffprobe -v error -count_frames -select_streams v:0 \
  -show_entries stream=nb_read_frames -of csv=p=0 circle.gif

极简示例应该输出 2。如果输出 9,说明帧数参数没有生效,需要检查传入的值是否在 2–16 之间。

GPT Image 2.6 GIF 的功能限制

GIF 模式不支持以下能力,请求时不要携带:

  • stream 流式输出和 partial images 渐进式预览
  • 自定义 output_compression
  • prompt_rewriter

另外,frame_count 和 frame_duration_ms 只用于 GIF,不要传给 PNG、JPEG、WebP 或 SVG 请求。

🚀 快速开始:推荐在 API易 apiyi.com 注册后使用新用户的免费测试额度,先用 512×512、2 帧、quality: "low" 跑通全流程,再逐步加大帧数和尺寸。平台提供 OpenAI 兼容接口,一个 API Key 就能调用 GPT Image 等主流模型。


常见问题 FAQ

Q1:GPT Image 2.6 Sunburst 生成 GIF 时,size 指的是什么?

`size` 是每一帧的尺寸,不是最终拼图的尺寸。实际校验时,系统会按帧数选择布局,算出拼图的宽、高和总像素,再和 3840 单边、8,294,400 总像素、3:1 比例这几项限制比较。

Q2:为什么 1024×1024 在 GPT Image 2.6 GIF 里一帧都生成不了?

因为在任何布局下它都会超界。4×2 和 4×3、4×4 布局的拼图宽是 4096,超过 3840;3×3 布局的拼图是 3072×3072,总像素 9,437,184,超出预算。报错信息通常是 `No supported sheet fits … The longest edge must be less than or equal to 3840.` 这种情况把单帧改成 960×960 或更小即可。

Q3:frame_count 传 1 或 17,为什么没有报错?

在当前链路下,超出 2–16 范围的 `frame_count` 不会返回 400。系统会同时丢掉 `frame_count` 和 `frame_duration_ms`,回退到默认的 9 帧、1.8 秒。建议在客户端做范围校验,生成后再用 ffprobe 核对实际帧数。

Q4:n 大于 1 时,GPT Image 2.6 的像素预算会累加吗?

在当前链路下,每张单独校验,不累加。实测 2 张 × 16 帧 × 512²(合计 8,388,608)仍然成功。不过官方指南写的是多张也要落在同一预算内,所以批量场景请以实际返回为准,必要时拆成多次 `n=1` 的请求。

Q5:如何快速通过 API 调用 GPT Image 2.6 Sunburst 生成 GIF?

推荐按以下步骤操作:

1. 访问 API易 apiyi.com 注册账号,获取 API Key 和免费测试额度
2. 将本文代码的 base_url 设为 `https://api.apiyi.com/v1`
3. 用 512×512、2 帧、`quality: “low”` 的极简示例验证链路,再按尺寸表调整参数

Q6:GPT Image 2.6 能基于已有图片生成 GIF 吗?

可以。`/v1/images/edits` 同样支持 `output_format: “gif”`,把参考图放进 `images` 字段,第一张图会作为动画主体,其余参数和生成接口一致,尺寸规则也完全相同。提示词里建议写明“固定镜头”“最后一个动作回到起始姿势”,循环会更顺。

Q7:本文的尺寸边界会变化吗?

有可能。拼图预算是 2026-11-09 在官转链路的实测口径:8,294,400 顶格通过,12 帧 832² 被拒。模型侧可能调整这些边界,最终以接口返回的 400 报错为准。建议把预检函数里的常量做成可配置项,方便随时更新。


GPT Image 2.6 Sunburst GIF 尺寸 Key Takeaways

  • size 是单帧尺寸:限制作用在所有帧共享的拼图上,不在单帧上
  • 布局按档固定:4×2、3×3、4×3、4×4 四种布局,分别对应 2–8、9、10–12、13–16 帧
  • 三项硬约束:拼图单边 ≤ 3840,总像素 ≤ 8,294,400,长短边比 ≤ 3:1
  • 最稳尺寸是 512×512:2–16 帧全部可用;768² 最多 12 帧,960² 最多 9 帧
  • 1024² 完全不可用:迁移静态图参数时,需要先把尺寸改小
  • 越界帧数会静默回退:建议客户端校验范围,生成后用 ffprobe 核对帧数
  • 低成本验证:在 API易 apiyi.com 用 quality: "low" 跑边界测试,费用最低

总结

GPT Image 2.6 Sunburst 生成 GIF 的尺寸规则,核心是三步换算:

  1. 先定布局:根据 frame_count 找到对应的 4×2、3×3、4×3 或 4×4 布局
  2. 再算拼图:用单帧宽高乘以布局行列,得到拼图的宽、高和总像素
  3. 最后校验:检查单边、总像素上下限和长短边比,并确认宽高是 16 的倍数

日常使用中,512×512 是兼容性最好的默认值;需要大画面时,9 帧配 960×960 或 1280×720 能把预算用满。把本文的预检函数接入业务代码,大部分 400 报错都可以在本地提前发现。

推荐通过 API易 apiyi.com 快速验证你的尺寸组合,平台提供免费测试额度和 OpenAI 兼容的统一接口,适合在正式接入前完成边界测试。


📚 参考资料

  1. API易 文档中心 – GPT Image 2.6 GIF 生成循环动画:官方参数与实测边界说明
  2. 链接: docs.apiyi.com/api-capabilities/gpt-image-2/gpt-image-2-6
  3. 说明:包含 GIF 参数范围、拼图约束、报错示例与编辑接口用法

  4. FFmpeg 官方文档 – ffprobe:音视频与 GIF 元数据查看工具

  5. 链接: ffmpeg.org/ffprobe.html
  6. 说明:用于核对生成 GIF 的实际帧数和每帧时长

作者:APIYI 技术团队
技术交流:如在 GIF 尺寸配置上遇到问题,欢迎通过 API易 官网首页联系我们,获取更多接入支持。

延伸阅读

类似文章