GPT Image 2で4K画像を生成するなら、まずAPIリクエストのsizeに3840x2160または2160x3840を指定します。横長なら前者、縦長なら後者を最初の検証サイズにすると、後で保存ファイルの幅と高さを確認しやすくなります。
返却される画像データはbase64として扱い、PNGなどのファイルに保存してから実際のピクセルを読み取ります。APIが成功しても、保存処理、CMS、画像最適化、CDN、フロントエンド表示のどこかで縮小される可能性があります。
単発の生成や編集にはImage APIが向いています。会話、agent、複数toolの一部として画像生成を使う場合はResponses APIを選びます。どちらでも2560x1440を超える出力は実験的な範囲として扱い、最終公開前に確認を入れます。
| 目的 | 最初の設定 | 理由 | 止める条件 |
|---|---|---|---|
| 横長4K | size: "3840x2160" | 16:9の標準的な4K出力 | 保存後の幅高さが一致しない |
| 縦長4K | size: "2160x3840" | ポスターやモバイル用に使いやすい | 後段のcropで意味が崩れる |
| アプリ内の多段処理 | Responses API image tool | 会話やtool flowに組み込める | 測定できる画像ファイルが残らない |
| 品質優先の最終素材 | 2Kマスターからupscale | 構図と文字を先に安定させやすい | upscaleで文字が崩れる |
promptに「4K」と書くだけでは不十分です。APIのsizeで指定し、保存したファイルの実ピクセルを確認して初めて4K出力として扱えます。
sizeが4Kの実ピクセルを決める
promptは画像の中身を決めるためのものです。商品、人物、背景、文字、構図、雰囲気はpromptで指定できますが、最終ファイルの幅と高さを保証する役割はsizeにあります。「4K風」「高解像度」と書いても、実ファイルが3840pxになるとは限りません。
最初のテストでは、prompt、size、qualityを固定します。変数を増やしすぎると、失敗したときに原因が分からなくなります。まずは3840x2160で1枚作り、保存、測定、表示まで通して確認します。
チーム内の仕様書にもsizeを明記します。編集者は求めるキャンバスを理解でき、エンジニアは呼び出し前にサイズをvalidateでき、デザイナーは後段のcropや圧縮が素材を変えていないか確認できます。
hljs jsconst result = await client.images.generate({
model: "gpt-image-2",
prompt: "A clean product hero image with precise Japanese headline text.",
size: "3840x2160",
quality: "high"
});

有効な4Kサイズとcustom sizeの条件
custom sizeを使う場合は、長辺が3840px以内、幅と高さが16の倍数、長辺と短辺の比率が3:1以内、総ピクセル数が許容範囲内という条件を確認します。このどれかを外すと、promptが正しくてもリクエストは不安定になります。
3840x2160と2160x3840は、4K検証の最初の組み合わせとして扱いやすいです。4096x2160は一般的な4K表記として見かけますが、長辺が3840を超えるため、GPT Image 2の直接指定には向きません。
実装では、APIに投げる前にローカルで判定します。エラー文には、edge limit、16の倍数、aspect ratio、pixel countのどれに引っかかったかを書きます。そうしないと、担当者はpromptを直すべきなのか、sizeを直すべきなのか判断できません。
hljs jsfunction isValidImageSize(width, height) {
const pixels = width * height;
const longEdge = Math.max(width, height);
const shortEdge = Math.min(width, height);
return longEdge <= 3840 && width % 16 === 0 && height % 16 === 0 &&
longEdge / shortEdge <= 3 && pixels >= 655360 && pixels <= 8294400;
}
| Case | Use it? | Why | Check |
|---|---|---|---|
| 3840x2160 | yes | standard landscape 4K | verify decoded width and height |
| 2160x3840 | yes | portrait 4K within the same edge limit | confirm downstream crop rules |
| 4096x2160 | no | the long edge exceeds 3840 | use a valid 3840-edge size or upscale |
| 3840x1200 | depends | must satisfy aspect and total-pixel rules | check 3:1 ratio and pixel floor |
Image APIで直接4Kを生成する
1回のリクエストで1枚の4K画像を作るなら、Image APIが最短です。model、prompt、size、qualityを指定し、返却されたbase64をファイルとして保存します。routeが短いほど、検証とログも明確になります。
ログにはモデル名、size、quality、output format、保存先、実際の幅高さ、失敗理由を残します。これにより、画質の議論とサイズの議論を分けられます。4Kなのに画質が悪いのか、そもそも4Kファイルではないのかを切り分けられます。
最初からreference image、編集、多言語テキスト、長いprompt、複数サイズを同時に試すのは避けます。まず直接生成の保存と測定が通ってから、編集やbatchのような複雑な条件を追加します。
hljs jsimport fs from "node:fs";
const image = result.data[0];
fs.writeFileSync("gpt-image-2-4k.png", Buffer.from(image.b64_json, "base64"));

Responses APIで多段ワークフローに入れる
画像生成が単独機能ではなく、chat、agent、tool chainの一部ならResponses APIを使います。例えば、ユーザーの商品説明を読み、訴求軸を整理し、4K hero imageを作り、最後に公開メモを返すような流れです。
この場合も画像toolには明示的なsizeが必要です。上流のテキストモデルに「4K画像を作って」と言わせるだけでは足りません。tool callそのものに有効なサイズを入れ、返却された画像を保存して測定します。
多段処理では、失敗の場所を分けて記録します。brief生成が悪かったのか、image toolが失敗したのか、保存に失敗したのか、frontendが縮小しているのかを分けないと、修正すべき箇所が見えません。
hljs jsconst response = await client.responses.create({
model: "gpt-5.4",
input: "Create a campaign poster and return production notes.",
tools: [{ type: "image_generation", model: "gpt-image-2", size: "3840x2160" }]
});
quality、format、透明背景の扱い
qualityは作業段階で選びます。構図探索ならlowやmedium、最終候補ならhighが候補になります。ただしhighはコストと待ち時間を増やす可能性があります。サイズ検証と品質比較を同時に行うと、原因分析が難しくなります。
PNGは後処理や文字の確認に向いています。JPEGやWebPはWeb配信で軽くしたいときに便利です。圧縮後は、文字、細線、ロゴ、UI mockupが崩れていないかを確認します。ピクセル数だけ合っていても、公開素材として足りない場合があります。
GPT Image 2は透明背景を直接出す前提ではありません。透明PNGが必要な場合は、生成後にmask、segmentation、背景削除、デザインツールで処理します。モデルの4K生成と透明化は別工程として設計します。
費用も単純な4K単価だけでは判断できません。image input、image output、text input、quality、edit、retry、batchの有無で変わります。公開前の見積もりは、最新の公式情報と小さなsmoke testの実測を合わせます。
ネイティブ4Kか、2Kマスターからupscaleか
ネイティブ4Kは、最初から3840pxの成果物が必要なときに向いています。広告バナー、印刷前のプレビュー、大きな商品hero、デザインシステムに渡す最終素材などでは、直接4Kのほうが後工程が短くなります。
一方で、文字や構図がまだ固まっていない場合は2Kマスターから始めたほうが現実的です。複数案を出し、文字とレイアウトが安定した候補を選び、それからupscaleするほうが失敗コストを抑えられます。
選び方は、どのリスクを減らしたいかで決めます。ピクセル不足が最大リスクならネイティブ4K。構図のやり直しが最大リスクなら2K探索。予算が最大リスクなら探索と最終出力の上限を分けます。
| Production need | First route | Reason | Stop rule |
|---|---|---|---|
| Direct 4K file from one request | Image API | one generation call controls size directly | stop if decoded file is not requested size |
| Agent or multi-step app | Responses API image tool | image generation can sit beside text and tools | stop if tool result is not saved and measured |
| Large format from best-looking draft | 2K master plus upscale | often more controllable for text and fine detail | stop if upscaler changes text or layout |
| Unclear access or billing | small smoke test | org verification and cost vary by account | stop before batch spending |
保存後に必ずファイルを検証する
API responseが成功しても、公開ファイルが正しいとは限りません。ファイルが存在するか、読み取れるか、幅と高さが期待値か、形式が意図したものかを確認します。CMSやCDNが別サイズを作る場合は、最終URLでも測定します。
検証結果はmetadataとして残します。width、height、format、file size、生成時のsize、quality、保存先を記録しておけば、後からローカライズ画像やOG画像を作るときにも追跡できます。
サイズが違う場合はpromptより先にrequestとpipelineを見ます。sizeの文字列、custom sizeの条件、model access、organization verification、保存先、画像最適化、frontendのsrcsetを順に確認します。

失敗時の切り分け
invalid sizeなら、まず寸法ルールを疑います。長辺、16の倍数、比率、総ピクセル数をログに出します。編集者向けには、どの条件に違反したかを具体的に返します。
access errorなら、コードではなくアカウント側の問題かもしれません。GPT Image 2の利用にはmodel accessやorganization verificationが関係する場合があります。本番と同じorganization、同じAPI keyで小さなテストを先に通します。
画像は生成できたのに最終表示が小さい場合、CMS、CDN、frontend、デザインツールのどこかで変換されています。original、uploaded original、public URL、browser表示を別々に測ると原因が早く分かります。
FAQ
promptに4Kと書くだけで十分ですか?
十分ではありません。最終ピクセルはsizeで指定し、保存後のファイルで確認します。
最初に使うべきサイズは?
横長なら3840x2160、縦長なら2160x3840が分かりやすいです。custom sizeは条件を満たす場合だけ使います。
4096x2160は使えますか?
直接指定には向きません。長辺が3840を超えるため、有効サイズで生成してからupscaleを検討します。
Image APIとResponses APIの違いは?
Image APIは直接生成向けです。Responses APIはchat、agent、tool workflowの中に画像生成を入れるときに使います。
透明背景は直接出せますか?
GPT Image 2では直接の透明背景出力を前提にしません。必要なら生成後に背景処理を行います。
4Kが不安定なときは?
size、アクセス権、保存ファイル、CDN変換を確認します。それでも不安定なら2Kマスターからupscaleします。



