AIFreeAPI Logo

GPT Image 2で1024×576がinvalid sizeになる理由と直し方

A
12 min readAI画像生成

幅も高さも16の倍数なのにエラーになる原因は、画像全体のピクセル数です。16:9の構図を保って生成し、必要なファイル寸法に仕上げる方法を紹介します。

サイズエラーから画像生成、サムネイルへの縮小までを示す図

GPT Image 2にsize: "1024x576"を指定してinvalid sizeになる場合、まず確認したいのは総ピクセル数の下限です。1024×576は589,824ピクセルで、OpenAIの直接APIが定める最小値655,360ピクセルに届きません。幅と高さが16の倍数で、アスペクト比が16:9でも、この条件で不適合になります。

最終的に1024×576のサムネイルが必要なら、1280×720で生成し、保存後に1024×576へ縮小する方法が使えます。どちらも16:9なので、画像の一部を切り取ったり、上下に余白を加えたりする必要はありません。

以下は2026年9月8日時点のOpenAI公式の画像出力仕様と、その条件に基づく計算です。掲載コードは実装例であり、この記事のために有料APIを呼び出して成功率や処理時間を測定したものではありません。

1024×576は、どの条件に引っかかるのか

横長の画像と比較バーで総ピクセル数の下限を説明する図
横長の画像と比較バーで総ピクセル数の下限を説明する図

直接のOpenAI APIでmodel: "gpt-image-2"を使う場合、具体的な幅と高さの指定には次の条件がすべて適用されます。

条件1024×576の場合判定
幅と高さが正の16の倍数1024÷16=64、576÷16=36適合
長い辺が3840ピクセル以下長い辺は1024適合
長辺÷短辺が3以下1024÷576≒1.778適合
総ピクセル数が655,360以上、8,294,400以下1024×576=589,824下限未満

「16刻みで指定すればよい」と覚えていると、最後の条件を見落としがちです。APIは幅と高さだけでなく、その積も判定します。プロンプトに「16:9」「横長」と追加しても、送信するsizeが変わらなければ総ピクセル数は条件を満たしません。

また、1024x5761024×576は、リクエスト内では同じ文字列ではありません。本文では読みやすい掛け算記号を使っていますが、APIのsizeには半角の英字xを使います。正しい区切り文字に直すことと、サイズ自体を有効にすることは別の確認です。

16:9のまま生成するなら1280×720から

必要なのが16:9の構図なら、幅だけを固定して高さを少し増やすより、比率を保てる寸法を選ぶ方が後処理を簡単にできます。

生成時の指定総ピクセル数比率・用途上の注意公式の寸法条件
1024x576589,82416:9だが小さすぎる不適合
1024x640655,3608:5。16:9の代わりにはならない適合
1280x720921,60016:9で生成し、1024×576へ縮小できる適合
1536x8641,327,10416:9。より大きい原稿が必要な場合の候補適合
1920x10802,073,60016:9だが1080は16の倍数ではない不適合
2048x11522,359,29616:9。1024×576の縦横2倍適合

ここでの「適合」は、公開仕様にある寸法条件を満たすという意味です。接続先のサービスや利用ツールがその値を受け付けるかは、別に確認が必要です。

1280×720は、厳密な16:9と16の倍数という条件を満たす中で、総ピクセル数の下限を超える最小のサイズです。16:9の寸法を幅16n・高さ9nとすると、高さも16の倍数にするにはnが16の倍数でなければなりません。そのため候補は幅256k・高さ144kとなります。k=4の1024×576は下限未満、次のk=5が1280×720です。

一方、1024×640なら最小ピクセル数には届きますが、16:9ではありません。これをそのまま1024×576に押しつぶすと形が変わります。縦横比を維持して変換するなら切り抜きか余白の追加が必要になるため、最初から16:9で生成する方が目的に合います。

生成した画像を正確な1024×576に仕上げる

処理を「APIで受け付けられるサイズ」と「納品・掲載に必要なサイズ」の2段階に分けます。直接APIではsize"1280x720"にし、返された画像をローカルで縮小します。プロンプトには画像に描いてほしい内容を書き、ファイル寸法はパラメーターと画像処理で指定します。

1. 直接APIには1280x720を送る

Images APIの公式ガイドに沿ったPythonの例です。既にOpenAI APIの認証情報を設定済みの環境を想定しています。実行すると画像生成のAPIリクエストが発生します。

bash
python -m pip install openai pillow
python
import base64 from pathlib import Path from openai import OpenAI client = OpenAI() # 環境変数 OPENAI_API_KEY を使用 result = client.images.generate( model="gpt-image-2", prompt="静かな朝の書斎。窓際の机と観葉植物を写した横長の写真。", size="1280x720", output_format="png", ) Path("generated.png").write_bytes( base64.b64decode(result.data[0].b64_json) )

これはOpenAIの/v1/images/generationsに接続する例です。他社サービスのAPIキーをそのまま入れ替える例ではありません。別の接続先を使う場合は、そのサービスが定めるエンドポイント、モデル名、サイズの指定形式に合わせてください。

2. 保存したファイルの比率を確かめて縮小する

次のコードはAPIを呼ばず、手元のgenerated.pngだけを処理します。実際の画像が16:9か確認してから、PillowのLANCZOSフィルターで1024×576に縮小します。

python
from PIL import Image with Image.open("generated.png") as image: image.load() width, height = image.size print("生成された寸法:", image.size) if width * 9 != height * 16: raise ValueError( f"生成画像が16:9ではありません: {width}x{height}" ) if width < 1024 or height < 576: raise ValueError("生成画像が目標サイズより小さいため処理を停止します") image = image.convert("RGBA" if "A" in image.getbands() else "RGB") resized = image.resize((1024, 576), Image.Resampling.LANCZOS) resized.save("thumbnail-1024x576.png") with Image.open("thumbnail-1024x576.png") as saved: assert saved.size == (1024, 576) print("保存後の寸法:", saved.size)

1280×720からなら縦横とも80%に縮小されます。切り抜きは行わないので、構図全体が残ります。ただし、細かな文字や細線は縮小で読みにくくなることがあります。ファイル寸法の確認後、掲載時の大きさでも見ておくと用途に合うか判断できます。

ファイル名を変えただけでは画像の寸法は変わりません。また、WebページのCSSで幅を1024ピクセルに設定しても、元ファイルの画素数はそのままです。アップロード先が1024×576のファイルを要求する場合は、上のように画像そのものを保存し直してください。

サイズを直しても失敗するときの確認順序

入力欄から送信データ、API、保存ファイルまで確認箇所をたどる図
入力欄から送信データ、API、保存ファイルまで確認箇所をたどる図

1280×720に変えてもエラーになる場合、さらに大きな値を試す前に、どこで拒否されているかを確認します。入力欄の制限、実際に送信された値、接続先のAPI仕様は一致するとは限りません。

  1. エラーの発生箇所を確認する。 入力欄が720を受け付けないなら、APIに届く前の制約です。HTTPレスポンスが返っているなら、ステータスコードとエラー本文を保存します。invalid sizeという一部の文言だけで、認証やモデル指定の問題までサイズのせいにしないようにします。
  2. 送信されたモデル名とsizeを確認する。 設定画面で1280×720を選んでも、送信データがその値になっているとは限りません。ツールのログや開発者向け表示で、modelsize、リクエスト先を見ます。ログを共有するときはAPIキーや認証ヘッダーを除いてください。
  3. 接続先のサイズ形式を確認する。 直接のOpenAI APIではsize: "1280x720"ですが、サービスによっては比率と解像度を別フィールドで指定します。size: "16:9"aspect_ratioの例を、異なるAPIにそのまま移さないでください。
  4. 返された画像も確認する。 APIが成功しても、保存した画像が意図した寸法とは限りません。上のコードで実寸を読み、16:9でなければ送信内容とツール側の処理を再確認します。

日本語のComfyUI公式ノード文書では、Customcustom_widthcustom_heightに加え、幅と高さそれぞれの下限1024が記載されています。同じページは非推奨ノードの文書でもあるため、この入力欄の下限をOpenAI API全体の制限と解釈することはできません。

たとえば、使っているノードが実際に高さ720を入力できない場合、1280×720がAPIの寸法条件に適合することと、その画面で指定できることは別です。両辺1024以上の入力が必要で、その接続先がカスタムサイズをサポートしているなら、2048×1152は16:9を保つ候補になります。まず使用中のノードの説明と送信値を確認し、仕様が分からないまま更新や置き換えを繰り返さない方が原因を追いやすくなります。

APIへの基本的な接続手順や生成・編集の使い分けは、GPT Image 2 APIガイドで確認できます。

autoを使えば1024×576で保存できる?

size: "auto"は、プロンプトに応じたサイズ選択をモデルに任せる設定です。1024×576という最終ファイル寸法を保証する指定ではありません。出力サイズが固定された用途では、16:9の有効な寸法を指定し、生成後に実寸を確認して縮小する手順を使うと、構図とファイルサイズを分けて管理できます。

qualityoutput_formatも、幅・高さの不適合を解消するパラメーターではありません。今回の589,824ピクセルという問題は、生成時の寸法を変更することで解消します。1024×576は生成リクエストには小さすぎても、ローカルで仕上げる最終出力としては使えます。