透過したはずの画像をスライドに置くと、白い四角が残る。そんなときは、まずダウンロードした元のファイルを確認してください。PNG形式でも、白背景や市松模様が画像そのものに描かれていることがあります。
GPT Image 2では、APIの透過背景機能がプレビューとして利用できます。background="transparent" と output_format="png" を指定する方法が、OpenAIの現在のガイドに掲載されています。以前の「透過非対応」という説明と、現在のAPI仕様は区別する必要があります。

白い四角が現れた場所を調べる
画像編集ソフトで元ファイルの下に黒い長方形を置き、次に白い長方形へ切り替えます。背景部分に下の色が見えれば、透過は働いています。画像を動かしたときに市松模様も一緒に動くなら、その模様は透明表示ではなく画像の一部です。
元ファイルが透過している場合は、生成をやり直す前に、書き出したファイルや圧縮後のファイルを確認します。途中でJPEGに変換したり、背景と合成して保存したりすると、透過は残りません。PNGまたは透過対応のWebPで保存し、サイトで使う場合は実際に配信されたファイルまで比較してください。
透過しているのに白い縁だけが残る場合は、別の問題です。半透明の境界に元の背景色が混ざっている可能性があります。輪郭を全体的に削る前に、マスクや縁の色を局所的に調整します。細い線や髪の毛まで消してしまわないことが大切です。
新しい素材をAPIで生成する
次の例は、説明用のイラストを新しく作る場合のものです。Pythonの openai パッケージを用意し、環境変数 OPENAI_API_KEY にAPIキーを設定して実行します。モデルを利用できるアカウントが必要です。ChatGPTの画面や外部サービスに同じ設定があることを示す例ではありません。
pythonimport base64 from pathlib import Path from openai import OpenAI client = OpenAI() response = client.images.generate( model="gpt-image-2", prompt=( "資料に使う、小さな青いじょうろのイラスト。全体を画面に収める。" "背景は完全に透明。床、壁、白い背景、市松模様、落ち影を描かない。" ), background="transparent", output_format="png", size="1024x1024", quality="medium", ) if not response.data or not response.data[0].b64_json: raise RuntimeError("画像データがありません") Path("watering-can.png").write_bytes( base64.b64decode(response.data[0].b64_json, validate=True) )
画像データを b64_json から復号して保存する流れは、公式の画像生成ガイドに基づきます。Base64文字列をそのままテキストとして保存しても、PNG画像にはなりません。
形式の指定は output_format です。response_format="png" と混同しないでください。また、PNG出力には output_compression を付けません。これらは画像生成APIのパラメーターで確認できます。
「透明な背景」と同時に「木の机に置く」と指示すると、欲しい素材と背景の指定が食い違います。独立した素材が必要なら、被写体と必要な余白を説明します。影を残す場合も、その影が別の背景に自然に重なるかを保存後に確認してください。
元の写真やロゴを使う場合
商品写真の形状やロゴの文字をそのまま残したいなら、生成よりも選択範囲とマスクによる切り抜きが適しています。自動選択で大まかに背景を隠し、必要な部分をマスク上で復元する方法なら、元画像を壊さずに調整できます。
単色背景のロゴは、背景につながる範囲を選択して許容値を少しずつ上げます。画像全体の白色を一度に消すと、ロゴ内部の白い部分も消えることがあります。髪、毛、薄い布、ガラスは一律のしきい値で処理せず、半透明部分を残して確認します。
GPT Image 2で既存素材を編集することもできます。編集APIでは、入力画像とともに background="transparent" と出力形式を指定し、指示文でも透過背景の維持を伝えます。ただし、生成による編集で細部が完全に一致するとは限りません。正確なロゴや商品外観が必要な作業では、通常の画像編集を優先してください。
ファイルをまとめて確認するための小さな検査
Pillowをインストールすると、各ピクセルの透明度を調べられます。次の例は背景を削除する処理ではなく、保存済みファイルの検査です。
pythonfrom PIL import Image with Image.open("watering-can.png") as source: print("形式:", source.format) rgba = source.convert("RGBA") alpha = rgba.getchannel("A") low, high = alpha.getextrema() if low == 255: print("すべて不透明です") elif high == 0: print("すべて透明で、被写体が見えません") else: print("透明度があります。背景と輪郭を確認してください") for name, color in [("light", "white"), ("dark", "black")]: base = Image.new("RGBA", rgba.size, color) Image.alpha_composite(base, rgba).convert("RGB").save( f"preview-{name}.png" )
Pillowの画像操作を使って、透明度の最小値と最大値を調べています。RGBAへの変換だけでは白背景を取り除けません。生成される確認用画像は背景と合成済みなので、透過素材の原本とは別に保管してください。
「透明度があります」は完成の判定ではありません。透明な点が一つあるだけでも、全体が薄く透ける長方形でも、この判定になります。必要な場所が透明か、被写体が欠けていないか、実際の掲載サイズで縁が自然かを目で確認します。
素材を使い回すなら、透過した原本から各サイズを書き出します。ECの商品一覧ではキャンバスの比率、商品が占める大きさ、余白をそろえると配置しやすくなります。圧縮設定を変えたときは、白い商品、暗い被写体、細い輪郭のある画像で再確認すると、背景によって見え方が変わる失敗を見つけやすくなります。




