ChatGPTの透過PNG 3枚を白・黒・緑で実測、髪と基板の縁は崩れない
ChatGPT Images 2.5に「透過で出力して」と頼んだ3枚を白・黒・緑に合成し、アルファ値の分布・縁の減衰幅・ハローの有無を数値で測りました。アルファ253の落とし穴と、透過を直接出せる他モデルの一覧つき。
関連記事としては
Bloggpt-image-2 vs nanobanana-pro:日本語漫画・アニメ・3Dを同一プロンプトで対決させてみたLiteLLM Gateway経由でgpt-image-2とnanobanana-proを5テーマ比較。日本語吹き出し、スコアカード、アニメ、3Dの実測差を整理しました。→ もあわせて読むと、今回の論点とのつながりを把握しやすくなります。
AI で作った画像を素材として使おうとすると、最後に残るのが背景を抜く工程です。人物なら髪の毛、動物なら毛並み、機材なら細い端子。ここで切り抜きが破綻して、白い縁が残ったまま妥協した経験がある人は多いと思います。
2026年9月8日に公開された ChatGPT Images 2.5 で、「透過で出力して」と一言添えるだけで背景の抜けた PNG が返ってきました。これは本当にゲームチェンジャーなのか。それとも、見た目だけ透明に見える画像なのか。
結論から書きます。3枚とも実アルファ付きの PNG で、髪の毛先・毛並み・基板の縁は白・黒・緑のどの背景に置いても白縁のハローが出ませんでした。 ただし、主題の内部のアルファ値が 255 ではなく 253 で止まっており、厳密な合成では約 0.9% だけ背景が透けます。用途によっては 1 行の後処理が要る、というのがこの記事の答えです。
透過出力は新機能ではなく、精度が上がった機能
先に整理しておきたいのは、透過出力そのものは 2.5 で初めて付いた機能ではないという点です。
API の Images エンドポイントには gpt-image-1 の時点で background パラメータがあり、transparent を指定して PNG か WebP で受け取れました。ChatGPT の画面でも、2026年5月の時点で「背景を透明にして」と頼めば Images 2.0 が透過画像を返す、という紹介記事が出ています。2026年8月20日には gpt-image-2 の API でも透過背景がプレビュー提供されました。
そして 2026年9月8日の公式発表では、Images 2.5 について「透過背景を含む、より複雑なレイアウトを扱える」と書かれています。新機能としてではなく、改善の一項目としての記述です。
つまり「できるようになった」というより「安心して頼めるようになった」が正確な言い方でしょう。手元には 2.0 の透過出力が残っていないので、この記事では 2.0 との差は公式発表の記述にとどめ、2.5 で得た 3 枚の中身を測ることに集中します。
検証した素材と測り方
素材は ChatGPT の画面から生成した 3 枚です。API ではないので、Flare と Sunburst のどちらが動いたかは特定していません。
| 素材 | サイズ | 狙い |
|---|---|---|
| ステッカー(小動物のイラスト・文字入り) | 1254×1254 | 毛並みのタッチと、白い縁取りをどう扱うか |
| 白いドレスの人物 | 1086×1448 | 風になびく髪の毛先。切り抜きの定番の難所 |
| GeForce RTX 5090 | 1448×1086 | 暗い被写体の直線的な縁と、金色の端子 |
測り方は単純です。PNG のアルファチャンネルをそのまま読み、画素を「完全透明」「完全不透明」「その中間」に分けて数えます。次に白、黒、緑(RGB 0,177,64)の 3 色の背景に合成して、縁を 2 倍に拡大して目で確認します。最後に、中間アルファの画素の色を隣の不透明画素と比べて、白縁や暗縁が系統的に乗っていないかを見ます。
道具は Python の Pillow と NumPy だけです。特別な計測環境は要りません。
アルファの分布:透明は透明、でも不透明は 253 で止まる
まず画素の内訳です。
| 画像 | 完全透明(α=0) | 中間(α 1〜249) | 主題内部の α 最頻値 |
|---|---|---|---|
| ステッカー | 29.1% | 3.75% | 253 |
| ドレス | 68.3% | 4.85% | 253 |
| RTX 5090 | 44.6% | 1.69% | 253 |
完全透明の画素は本当に 0 で、市松模様を描いた「透明風」の画像ではありません。ここは安心してよいところです。
引っかかったのは右端の列です。主題内部のアルファは 255 ではなく 253 が最頻値でした。ドレスの布地でも GPU のシュラウドの真ん中でも同じで、3 枚とも共通です。OpenAI のコミュニティでも、API の透過出力でアルファが 253〜254 で止まるという報告が出ており、これは個体差ではなくモデルの癖と考えてよさそうです。
影響を数字にすると、同じ画像を白背景と黒背景に置いたときの主題内部の輝度差は平均 2.1〜2.4/255、約 0.9% でした。計算は sRGB の 8 bit 値のまま、ストレートアルファの over 合成で行っています。線形色空間で合成する環境では差の見え方が少し変わりますが、桁は変わりません。ブログのサムネや SNS 用の画像では気づけません。ただ、印刷用の合成や、背景の色を厳密に管理する商品画像では、255 に揃えたくなる数字です。
直し方は簡単で、アルファが 250 以上の画素を 255 に丸めるだけです。Pillow なら次の 3 行で済みます。
from PIL import Image
im = Image.open("in.png").convert("RGBA")
r, g, b, a = im.split()
im.putalpha(a.point(lambda v: 255 if v >= 250 else v))
im.save("out.png")
もう一つ、地味に大事な事実があります。完全透明の画素の RGB は 3 枚とも全て黒でした。アルファを無視して表示するビューアや、JPEG に変換した瞬間に、被写体が黒いシルエットの上に乗った画像になります。素材を渡す相手が JPEG で保存し直すと、この黒背景が「出力された画像」として伝わってしまうので、PNG か WebP のまま扱う必要があります。
アルファを捨てて表示すると、完全透明の画素が黒なのでこう見える。JPEG 変換後も同じ
髪の毛先:白・黒・緑のどれに置いても白縁が出ない
切り抜きの品質を一番正直に映すのが、風になびく髪です。
ドレスの人物の髪の領域では、主題画素の 24.9% が中間アルファでした。毛先が「不透明か透明か」の二値ではなく、半透明として保存されているということです。これが効いて、白・黒・緑のどの背景に置いても、毛先が背景に溶けるように乗ります。黒背景で毛先が白く光ることも、白背景で毛先が灰色に沈むこともありませんでした。
左から白・黒・緑の背景。髪の毛先が半透明のまま乗り、白縁のハローは出ていない(2026-09-09 自前合成)
一方で布の縁、たとえばドレスの裾を 1 行横切ってアルファを読むと、0 → 15 → 106 → 223 → 252 と 2〜3 px で立ち上がります。胴体部の減衰幅の中央値は 2 px でした。輪郭がぼやけているわけではなく、アンチエイリアスとして妥当な幅です。
ステッカーは少し様子が違います。イラストの周りに白い縁取りが描かれており、中間アルファの画素の 7 割以上が明るい色でした。これはダイカットのステッカー風というデザインで、切り抜きの失敗ではありません。黒背景に置くと白い縁がはっきり見えますが、それは「そう描いてある」だけです。縁取りが要らない用途では、プロンプトで縁取りなしと指定する方が後処理より早いでしょう。
白い縁取りはダイカット風のデザイン。黒背景ではっきり見えるが切り抜きの失敗ではない
基板の縁:暗い被写体でも暗縁は乗らない
暗い被写体は、切り抜きの縁に暗い線が残りやすいものです。RTX 5090 の PCIe 端子の下端で、中間アルファの画素の色から最寄りの不透明画素の色を引いてみました。中央値は +3 で、系統的に暗くも明るくもなっていません。
緑背景に置いた拡大画像では端子の下に細い暗い線が見えますが、これは縁が 2 px で減衰するときに暗い被写体の色が薄く残ったもので、ハローではありません。白背景では同じ場所に暗い線が乗らないことからも分かります。
端子の下端。緑背景で見える細い暗い線は 2 px の減衰で、白背景では乗らない
コミュニティで報告のあった「薄い灰色の縁」は、この 3 枚では確認できませんでした。ただ、報告の多くは API の edit エンドポイントで既存画像を透過化した場合のものです。この記事は最初から透過で生成した画像だけを見ているので、edit で透過を頼んだ場合は別の結果になり得ます。
C2PA の署名は入っており、WebP に変換すると消える
4 枚とも、PNG の中に C2PA のメタデータが入っていました。署名者の文字列は OpenAI で、サイズは 4 枚とも同じ 23,617 バイトです。公式発表にも「C2PA metadata と不可視の透かしを引き続き使う」と書かれています。
原本の PNG を Pillow でそのまま WebP に保存し直したところ、変換後のファイルからは C2PA の文字列が消えていました。合成せず形式を変えただけでも残りません。合成した画像を配布するときに来歴を残したいなら、PNG のまま扱うか、自分で署名し直す必要があります。逆に、透過素材を別の画像に合成した時点で、元の署名は合成後の画像には引き継がれません。
検証に使った RGBA の原本 3 枚は PNG のまま置いてあります(人物・ステッカー・RTX 5090。合計約 4.5 MB)。アルファや C2PA を自分の環境で確かめたい人はそちらを開いてください。
透過を「生成段階で」出せるモデルはどれか
「他に透過で出せるモデルはあったか」という疑問に答えるには、透過の作り方を 3 つに分ける必要があります。
| 方式 | 仕組み | 該当するモデル・サービス |
|---|---|---|
| 生成時アルファ | モデルが RGBA を直接出力する | gpt-image-1 / gpt-image-2 / gpt-image-2.5(background: transparent)、LayerDiffuse 系(Stable Diffusion / FLUX に透明対応の VAE を組み合わせる) |
| 生成後の背景除去 | RGB で生成してからソフトマスクで抜く | Recraft の背景除去ツール、Adobe Firefly(静止画は Express 等で後処理。透過オプションは動画生成のみ) |
| 描いた市松模様 | アルファを持たず、透明に見える模様を描く | Gemini / Nano Banana 系 |
Gemini 系は RGB しか出せないので、「透明にして」と頼むと白か黒か市松模様を描いて返します。同じ絵を白背景と黒背景で 2 回生成して差分からアルファを復元する方法が知られていますが、2 回の生成が完全に同じ絵になる保証はありません。
Recraft は、公式 API リファレンスの画像生成エンドポイントに透過を指定するパラメータが無く、背景除去は別のエンドポイントとして提供されています。つまり「生成後に抜く」方式です。背景除去自体は髪や毛並みをソフトマスクで抜くと説明されているので、実用上は近い結果が得られる可能性があります。ただ、この記事では試していません。
生成段階でアルファを持つ強みは、髪の毛先の半透明が「後から推定したもの」ではなく「描いた時点の値」であることです。今回の 24.9% の中間アルファは、その強みがそのまま数字に出たものだと見ています。
透過素材 3 枚と文字入れで、サムネが 1 枚できた
実用の話をします。この記事のサムネイルは、透過素材 3 枚を並べて日本語の見出しを入れる指示を ChatGPT に出して作ったものです。素材の切り抜きが信用できると、レイアウトと文字だけに集中できます。
透過素材 3 枚+文字入れの指示で ChatGPT に作らせたサムネ。猫の画像は検証対象外
正直に言うと、このサムネは当サイトがこれまで自動生成してきたブログのサムネより明らかに良い。当サイトのサムネはコンセプト文を LLM に作らせてから画像生成に渡す 2 段構成ですが、素材を透過で作ってから合成する方が、主題がはっきり読める絵になります。この経路への切り替えは検討中です。
ただし、サムネに描かれた猫の画像は、この記事の検証対象には含めていません。検証したのはステッカー・人物・GPU の 3 枚だけです。
結局、誰が使えて、誰が気にするべきか
ブログや YouTube のサムネ、LINE スタンプ、SNS の素材なら、そのまま使えます。髪や毛並みの縁は 3 色の背景で破綻せず、後処理なしで合成できました。
商品画像や印刷物のように背景色を厳密に管理する用途では、アルファ 253 を 255 に丸める処理を挟んでください。上に書いた Pillow の 3 行で済みます。
透過を頼むときは、プロンプトに背景の描写を入れないことも大事です。API のドキュメントにも、プロンプトで背景や場面を描写すると、透過の指定より優先されて背景が描かれることがあると書かれています。「透過で出力して」と一言添えて、被写体だけを描写するのが確実でした。
ゲームチェンジャーかどうかは、切り抜き工程を持っていた人にとっては、たぶんそうです。今回の 3 枚は縁の後処理を一度もせずにそのまま合成できました。切り抜き工程を持っていなかった人にとっては、それほど大きな変化ではないかもしれません。
よくある質問
Q. ChatGPT の無料プランでも透過で出せますか。 A. Images 2.5 は ChatGPT の全ティアに提供されると公式発表にあります。ただし生成回数の上限はプランごとに異なります。
Q. API で透過を出すにはどうしますか。
A. Images API で background を transparent に、output_format を png か webp にします。JPEG はアルファを持てないのでエラーになります。
Q. 既存の画像を透過にする用途にも使えますか。 A. edit で透過を頼むと被写体が描き直されるため、元の輪郭を正確になぞる背景除去とは結果が違います。コミュニティでは edit 時の灰色の縁や、透過部分が塗り潰される報告もあります。既存画像の背景除去には専用ツールの方が向いています。
Q. 出力された PNG はそのまま配布できますか。 A. できますが、完全透明の画素が黒なので、JPEG に変換した相手には黒背景として見えます。PNG か WebP のまま渡してください。
参考リンク
- OpenAI「Introducing ChatGPT Images 2.5」
- OpenAI Images API リファレンス(background パラメータ)
- OpenAI コミュニティ「Transparent backgrounds are now available in preview for GPT-Image-2 in the API」
- ギズモード・ジャパン「背景を透明にして」(2026-05-16)
- Runware「Introducing LayerDiffuse」
- Recraft「Background tools」
- Adobe Firefly「Generate videos with transparent backgrounds」
- Julien De Luca「Generating transparent background images with Nano Banana Pro 2」
関連記事
Bloggpt-image-2 vs nanobanana-pro:日本語漫画・アニメ・3Dを同一プロンプトで対決させてみたLiteLLM Gateway経由でgpt-image-2とnanobanana-proを5テーマ比較。日本語吹き出し、スコアカード、アニメ、3Dの実測差を整理しました。→
Blog「Pro品質 × Flash速度」が一本化。Nano Banana Pro 2(Gemini 3.1 Flash Image)完全解説GoogleのAI画像生成「Nano Banana Pro 2」=Gemini 3.1 Flash Image を実際に触って確認した。品質と速度が一本化、料金実質半額。デメリットも正直に書く。→
この記事を書いた人
HW系エンジニアとして20年以上、10,000件を超える顧客訪問と2,000件を超える単独ソリューション実績。AIツールを使った個人開発やIoT農園など、Raspberry Piを使ったオートメーション化なども実践中です!エンジニア専門結婚相談所も運営中、ClaudeCodeで解決できない心の課題も解決いたします!
関連記事
reasoning effort 早見表——ChatGPTとClaudeの結論
ChatGPTとClaudeのreasoning effortを公式ドキュメントで突き合わせた早見表。既定値の違い(Claudeはhigh、GPT-5.6はmedium)、段階名が同じでも中身が違う理由、ultracodeはmaxの上ではないという誤解の訂正まで。
gpt-image-2 vs nanobanana-pro:日本語漫画・アニメ・3Dを同一プロンプトで対決させてみた
LiteLLM Gateway経由でgpt-image-2とnanobanana-proを5テーマ比較。日本語吹き出し、スコアカード、アニメ、3Dの実測差を整理しました。
「Pro品質 × Flash速度」が一本化。Nano Banana Pro 2(Gemini 3.1 Flash Image)完全解説
GoogleのAI画像生成「Nano Banana Pro 2」=Gemini 3.1 Flash Image を実際に触って確認した。品質と速度が一本化、料金実質半額。デメリットも正直に書く。
ChatGPT WebをAPI代わりにして大丈夫?Codexブラウザ自動化の境界線
Codex CLIやPlaywrightからChatGPT Webへ質問を送り、回答を回収するのは規約上大丈夫なのか。公式情報と実務判断を分け、個人開発で迷いやすい12例をやさしく整理します。
META-MARK × AI
ローカルAIを動かすGPU、ちゃんと選べていますか?
VRAM・性能・コスパをMetaScoreで数値化。AIアプリ別の推奨ハードウェア要件も確認できます。
PR広告:開発環境・キャリアまわりのサービス