作者注:用 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 尺寸核心要點
先用一張表看清 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 尺寸邊界詳解
這一節是全文重點。把拼圖的約束和佈局規則放在一起,就能推出每個幀數檔位的尺寸上限。
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 常用尺寸怎麼選
把上面的上限換成實際選型,可以得到下面幾條結論:
| 單幀尺寸 | 可用幀數 | 拼圖示例 | 適用建議 |
|---|---|---|---|
| 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 的尺寸規則,核心是三步換算:
- 先定佈局:根據
frame_count找到對應的 4×2、3×3、4×3 或 4×4 佈局 - 再算拼圖:用單幀寬高乘以佈局行列,得到拼圖的寬、高和總像素
- 最後校驗:檢查單邊、總像素上下限和長短邊比,並確認寬高是 16 的倍數
日常使用中,512×512 是兼容性最好的默認值;需要大畫面時,9 幀配 960×960 或 1280×720 能把預算用滿。把本文的預檢函數接入業務代碼,大部分 400 報錯都可以在本地提前發現。
推薦通過 API易 apiyi.com 快速驗證你的尺寸組合,平臺提供免費測試額度和 OpenAI 兼容的統一接口,適合在正式接入前完成邊界測試。
📚 參考資料
- API易 文檔中心 – GPT Image 2.6 GIF 生成循環動畫:官方參數與實測邊界說明
- 鏈接:
docs.apiyi.com/api-capabilities/gpt-image-2/gpt-image-2-6 -
說明:包含 GIF 參數範圍、拼圖約束、報錯示例與編輯接口用法
-
FFmpeg 官方文檔 – ffprobe:音視頻與 GIF 元數據查看工具
- 鏈接:
ffmpeg.org/ffprobe.html - 說明:用於覈對生成 GIF 的實際幀數和每幀時長
作者:APIYI 技術團隊
技術交流:如在 GIF 尺寸配置上遇到問題,歡迎通過 API易 官網首頁聯繫我們,獲取更多接入支持。
