| |

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は1フレームのサイズを指し、実際の制限はすべてのフレームを結合したスプライトシート全体に適用されます。本記事では、これらのルールを表形式で項目ごとに分解し、各フレーム数で使用可能なサイズ上限を示します。

多くの開発者が初めてgpt-image-2.6-sunburstでGIFを作成する際、次のような状況に遭遇します。sizeを1024×1024に設定し、フレーム数を2にしただけで、APIが直接400を返すのです。原因は、GIFのサイズルールが静止画とは異なることにあります。本記事では、「1フレームサイズ → スプライトシートレイアウト → スプライトシート制約」という3ステップ換算法を紹介し、任意のsizeとframe_countの組み合わせが検証を通過できるか判断できるようにします。

これはパラメータ説明の単純な翻訳ではありません。 本文中の境界値は2026-11-09に公式中継リンク上で実測した基準に基づいており、表内の各上限には算出プロセスが示されているため、ご自身で再確認できます。

核心的な価値:本記事を読めば、フレーム数に応じて適切な1フレームサイズを選択でき、GIF frames exceed the total request pixel budgetのようなエラーを回避し、512×512、768×768、960×960の間でどう取捨選択するかがわかります。

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


GPT Image 2.6 Sunburst GIF サイズの重要ポイント

まずは表で、GIF生成に関わる重要なルールを確認しましょう。その後、各項目を詳しく説明します。

要点 説明 あなたへの影響
size は1フレームのサイズ size は各フレームの幅と高さを表し、完成動画のサイズではありません 実際に検証されるのはスプライトシートなので、1フレームのサイズで見積もれません
すべてのフレームが1枚のスプライトシートを共有 モデルはまず各フレームを同じスプライトシートに描画し、その後GIFに分割します フレーム数が増えるほど、1フレームに使えるサイズは小さくなります
スプライトシートのレイアウトは固定 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を生成するプロセスは2段階です。まず固定グリッドに従ってすべてのフレームを1枚の大きな画像に描画し、その大画像を単一フレームに分割して、frame_duration_ms に従ってアニメーションを合成します。そのため、サイズ制限は単一フレームではなく、このスプライトシートの一辺の長さ、総ピクセル数、長辺と短辺の比率で決まります。

レイアウトはフレーム数に応じて段階的に決まり、実際のフレーム数に合わせて詰めて配置されるわけではありません。たとえば frame_count を2に設定しても、システムは依然として4×2レイアウトを使用します。参考資料の例でもこれが確認できます。2048×2048の単一フレームでも、2フレームあればスプライトシートには8192×4096が必要です。見積もる際は必ず「レイアウトのグリッド数」を使い、「実際のフレーム数」で計算してはいけません。

GPT Image 2.6 GIF の基本パラメータを読み解く

size 以外に、GIF には専用のパラメータが2つあります。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 の倍数である必要があり、1フレームあたりのサイズを表します
output_format "gif" に設定 frame_count と frame_duration_ms は GIF の場合にのみ有効です
quality low など 低コストでテストする場合は low を推奨します

frame_count が範囲外になったときの挙動には、特に注意が必要です。1 や 17 を渡しても、API は 400 を返しません。代わりに frame_count と frame_duration_ms を破棄し、デフォルトの 9 フレーム/1.8 秒にフォールバックします。つまり、リクエスト自体は「成功」しているのに、返ってくる結果は意図したものではない、ということが起こるのです。こうしたケースでは、生成後にツールを使って実際のフレーム数を必ず確認してください。具体的な方法はクイックスタートの部分で解説します。

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


GPT Image 2.6 Sunburst GIF のサイズ境界を詳しく解説

このセクションが本記事の中心です。結合画像の制約とレイアウトのルールを突き合わせれば、フレーム数ごとのサイズ上限を導き出せます。

GPT Image 2.6 の結合画像における4つの制約

制約 境界値 解説
結合画像の一辺 ≤ 3840 結合画像の幅も高さも 3840 ピクセルを超えられません
結合画像の総ピクセル上限 ≤ 8,294,400 3840×2160、つまり 4K 画面1枚分のピクセル数に相当します
結合画像の総ピクセル下限 ≥ 約 655,360 実測では 589,824 が拒否され、665,856 が通過しました
結合画像の長辺と短辺の比 ≤ 3:1 結合画像が細長すぎると拒否されます
フレームサイズ 幅・高さともに 16 の倍数 満たさない場合は有効な size として扱われません

上限については理解しやすいでしょう。一辺 3840 と総ピクセル 8,294,400 は独立した2つの関門であり、両方を同時に満たす必要があります。フレーム数が少ないときは結合画像の幅が先に一辺の制限に達し、フレーム数が多いときは総ピクセルが先に使い切られるのが一般的です。

見落とされがちなのが下限です。実測で拒否された 589,824 はちょうど 768×768 で、9フレーム・1フレーム 256×256 の 3×3 結合画像に相当します。通過した 665,856 は 816×816 で、9フレーム・1フレーム 272×272 の場合です。ここから推測すると、1フレームが小さすぎるうえにマスの少ないレイアウトが重なると、結合画像が小さすぎて拒否される可能性があります。たとえば 4×2 レイアウトに 256×256 のフレームを組み合わせると、結合画像は 1024×512 の合計 524,288 ピクセルとなり、下限を下回ります。つまり「サイズを小さくしてコストを抑える」という方法にも、下限という限界があるのです。

長辺と短辺の比の影響は、正方形以外のフレームで顕著になります。4×2 レイアウトで計算すると、1フレームが 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 で予算をちょうど使い切る

補足すべき点が 2 つあります。

  • 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-ja-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となり、3つの制約をすべて満たします。

💡 選定のヒント:サイズ上限はルールに基づいて計算された結果であり、モデル側で予算が調整される可能性があります。リリース前に APIYI 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"]))

プロンプトを書く際は、次の3点を明確に描写することが大切です。すなわち「主体は何か」「どのように動くか」「どのようにループするか」です。たとえば「回到起始位置」「seamless loop」といった記述を加えることで、最初と最後のフレームがより自然につながります。

GPT Image 2.6 GIF サイズの事前チェックと完全実装

本番環境では、リクエストを送る前にローカルで事前チェックを行い、不正なサイズをあらかじめ弾くことをおすすめします。そうすれば、400エラーでのやり取りを1回分節約できます。以下のコードは、本記事で紹介したレイアウト表と制約を関数としてまとめたもので、生成インターフェースと編集インターフェースの両方に対応しています。

完全な実装コードを見る(サイズ事前チェック付き)
import base64
import requests
from typing import Optional

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com/v1"  # APIYI 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 のリクエストには渡さないでください。

🚀 クイックスタート:APIYI(apiyi.com)に登録して、新規ユーザー向けの無料テスト枠を使うのがおすすめです。まずは 512×512・2 フレーム・quality: "low" で一連の流れを通し、それから徐々にフレーム数とサイズを増やしていきましょう。プラットフォームは OpenAI 互換インターフェースを提供しており、1 つの APIキー で 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 で 1 フレームも生成できないのですか?

どのレイアウトでも制限を超えてしまうからです。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. APIYI apiyi.com にアクセスしてアカウントを登録し、API キーと無料テスト枠を取得します
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` フィールドに入れると、1 枚目の画像がアニメーションの主体になります。その他のパラメータは生成エンドポイントと同じで、サイズのルールも完全に共通です。プロンプトには「カメラ固定」「最後の動作は開始時のポーズに戻す」と明記すると、ループがより自然になります。

Q7:本記事のサイズ境界は変わる可能性がありますか?

可能性はあります。結合画像の予算は 2026-11-09 時点で公式中継経路において実測した基準で、8,294,400 はギリギリで通過し、12 フレームの 832² は拒否されました。モデル側でこれらの境界が調整される可能性があるため、最終的には API が返す 400 エラーを基準にしてください。事前チェック関数の定数は設定可能な項目にしておくと、いつでも更新できて便利です。


GPT Image 2.6 Sunburst GIF のサイズに関する重要ポイント

  • size は1フレームあたりのサイズ:制限は全フレームが共有するスプライトシート(拼图)に適用され、個々のフレームには適用されません
  • レイアウトはフレーム数ごとに固定:4×2、3×3、4×3、4×4 の4種類で、それぞれ 2〜8 フレーム、9 フレーム、10〜12 フレーム、13〜16 フレームに対応します
  • 3つの厳格な制約:スプライトシートの各辺 ≤ 3840、総ピクセル数 ≤ 8,294,400、長辺と短辺の比 ≤ 3:1
  • 最も安定するサイズは 512×512:2〜16 フレームすべてで使用可能。768² は最大 12 フレーム、960² は最大 9 フレーム
  • 1024² はまったく使用不可:静止画のパラメータを流用する場合は、まずサイズを小さくする必要があります
  • 範囲外のフレーム数はサイレントにフォールバック:クライアント側で範囲を検証し、生成後は ffprobe でフレーム数を確認することをおすすめします
  • 低コストで検証:APIYI apiyi.com で quality: "low" を使って境界テストを実行すれば、費用を最小限に抑えられます

まとめ

GPT Image 2.6 Sunburst で GIF を生成する際のサイズルールは、次の3ステップの換算が核心です。

  1. まずレイアウトを決める:frame_count に応じて、対応する 4×2、3×3、4×3、4×4 のレイアウトを選びます
  2. 次にスプライトシートを計算する:1フレームの幅と高さにレイアウトの行数・列数を掛けて、スプライトシートの幅、高さ、総ピクセル数を求めます
  3. 最後に検証する:各辺、総ピクセル数の上下限、長短辺比をチェックし、幅と高さが 16 の倍数であることを確認します

日常的な利用では、512×512 がもっとも互換性の高いデフォルト値です。大きな画面が必要な場合は、9 フレームに 960×960 または 1280×720 を組み合わせると、許容範囲を最大限に活用できます。本記事の事前チェック関数を業務コードに組み込めば、400 エラーの多くをローカルで事前に発見できます。

サイズの組み合わせは、APIYI apiyi.com で素早く検証するのがおすすめです。このプラットフォームは無料のテスト枠と OpenAI 互換の統一インターフェースを提供しており、本番導入前の境界テストに適しています。


📚 参考資料

  1. APIYI ドキュメントセンター – 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のサイズ設定で問題が発生した場合は、APIYI公式サイトのトップページからお気軽にご連絡ください。導入に関する追加サポートもご案内します。

関連記事

類似投稿