まだPhotoshopで一枚一枚画像をいじってるの?PythonとNano Banana APIで、一発でまとめて処理しちゃおう!
こんな面倒くさい状況、経験ありませんか?
たくさんの商品画像があって、でも価格とかキャンペーンの文言を変えなきゃいけない…。だからって、Photoshopで画像を1枚ずつ開いて、文字のレイヤーを探して、そーっと修正して、名前を付けて保存…。10枚くらいやっただけで、もう頭がクラクラしませんか?時間かかるし、何よりミスしちゃいそうで怖いですよね。うっかり一個でも修正し忘れた日には…もう目も当てられないですよね。
これまでの作業は、こんな感じでした:
- まずPhotoshopを立ち上げて…
- 画像を読み込んで…
- 文字のレイヤーを探し出して…
- テキストを直して…
- 画像を書き出して…
- っていうのを、何回も繰り返すわけです。
数十枚、数百枚もの画像が目の前にあったら、正に肉体的な作業ですよ。
でも、今の時代はこうなります:
- Pythonのスクリプトを一つ実行するだけ。
- コーヒーでも飲んで、スマホをいじってる間に…
- あら不思議。すべての画像が自動で修正されて、指定したフォルダにスッキリ保存されてるんです。
この魔法の正体、それこそが今回ご紹介する主役、AI画像編集機能ってわけです。
主役のツール:Nano Banana API
一言でいうと、Nano Banana APIってのは、すごくパワフルなAIツールで、なんとデザイナーさんにお願いするみたいに、簡単な文章の指示だけで、画像の中身を直接いじれちゃうんです。
「この画像の『¥19.9』って書いてるところを『¥9.9』に変えて」って言うだけで、AIが意味をちゃんと理解して、きちんと修正してくれるんです。
準備は、たったの3ステップだけ
ご安心を。準備は超カンタンで、3分もあれば終わっちゃいます。
- Pythonのインストール:お使いのパソコンにPython 3が入ってるか、まず確認しましょう。
-
ライブラリのインストール:必要なのは、Webリクエストを送るための
requestsライブラリだけ。ターミナルかコマンドプロンプトで、下のコマンドをポチッと実行してください。pip install requests - APIキーの取得:APIを提供しているサイトでアカウントを作って、APIキーをゲットします。これがサービスを呼び出すための「カギ」になります。
これで準備はOK!めっちゃカンタンでしょ?
さあ、実践編!コピペするだけで使える完成版コード
ここに、完全なPythonスクリプトをそのまま載せました。YOUR_API_KEYの部分をご自身のキーに書き換えて、画像のURLとプロンプト(指示文)を変えれば、すぐに動かせますよ。
コードの中には、APIの使い方がちゃんとわかるように、詳しいコメントを入れておきました。
import requests
import time
import json
# --- 1. 準備:APIキーとURLを設定 ---
# ご自身のAPIキーに置き換えてください
API_KEY = "YOUR_API_KEY"
# APIのベースURL(公式ドキュメントから取得)
BASE_URL = "https://api.defapi.org"
# 認証用リクエストヘッダー。ドキュメントでは "Bearer <your-api-key>" 形式が指定されています
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
def edit_image_with_text(image_url: str, prompt: str):
"""
Nano Banana APIを使って、テキスト指示に基づき画像を編集する関数。
:param image_url: 編集したい画像のURL
:param prompt: 編集指示(例:「画像の価格ラベルを99円に変更」)
:return: 編集後の画像URL。失敗した場合はNoneを返す
"""
print(f"🚀 画像処理を開始します: {image_url}")
print(f"📝 編集指示: {prompt}")
# --- 2. 画像編集タスクを提出 ---
# タスクを作成するAPIエンドポイント
gen_url = f"{BASE_URL}/api/image/gen"
# AIに何をしてほしいかを伝えるリクエストボードを構築
# model: "google/nano-banana"モデルを使用
# prompt: 編集指示
# images: 元画像のURLを配列で指定(最大4枚)。今回は1枚だけ
payload = {
"model": "google/nano-banana",
"prompt": prompt,
"images": [image_url]
}
try:
# POSTリクエストを送信し、非同期タスクを作成
response = requests.post(gen_url, headers=headers, json=payload)
response.raise_for_status() # リクエストが失敗した場合(例:401, 400)、例外をスロー
# レスポンスからtask_idを取得。これがタスク状況を追跡するための唯一のID
task_id = response.json().get("data", {}).get("task_id")
if not task_id:
print("❌ エラー:task_idを取得できませんでした")
return None
print(f"✅ タスクの作成に成功!タスクID: {task_id}")
# --- 3. タスクの結果を定期的にポーリング ---
# タスク状況を確認するAPIエンドポイント
query_url = f"{BASE_URL}/api/task/query"
# タスクが成功または失敗するまでループで確認
while True:
# task_idをパラメータとしてGETリクエストを送信
params = {"task_id": task_id}
query_response = requests.get(query_url, headers=headers, params=params)
query_response.raise_for_status()
result_data = query_response.json().get("data", {})
status = result_data.get("status")
print(f"⏳ 現在のタスク状況: {status}...")
if status == "success":
# タスク成功!resultフィールドから編集後の画像URLを取得
edited_image_url = result_data.get("result", [{}])[0].get("image")
print(f"🎉 画像の編集が完了しました!新しい画像のURL: {edited_image_url}")
return edited_image_url
elif status == "failed":
# タスク失敗。失敗理由を出力
reason = result_data.get("status_reason", {}).get("message", "不明なエラー")
print(f"❌ タスクが失敗しました: {reason}")
return None
else:
# タスク仍在進行中(例如:in_progress, pending)、等待5秒后重试
time.sleep(5)
except requests.exceptions.RequestException as e:
print(f"❌ ネットワークリクエストでエラーが発生しました: {e}")
return None
except json.JSONDecodeError:
print("❌ APIレスポンスの解析に失敗しました。有効なJSON形式ではありません。")
return None
if __name__ == "__main__":
# --- ここで画像と指示を編集 ---
# サンプル画像:価格タグがついた商品画像
target_image_url = "https://cdn.openai.com/API/docs/images/body-lotion.png"
# サンプル指示:価格を新しい値に変更
modification_prompt = "Change the price text on the bottle to $9.99"
# 関数を呼び出してバッチ処理を開始(ここではサンプルとして1枚だけ処理)
# URLのリストを作ってループ処理すれば、バッチ処理も可能です
final_image_url = edit_image_with_text(target_image_url, modification_prompt)
if final_image_url:
print("\n処理が完了しました。上記のURLにアクセスして結果を確認できます。")
else:
print("\n処理が終了しましたが、編集後の画像の取得に失敗しました。")
どうやって使うの?
-
コードを保存: 上のコードを
batch_edit.pyみたいな名前で、Pythonファイルとして保存しましょう。 -
キーを入力:
API_KEY = "YOUR_API_KEY"って書いてある行を見つけて、YOUR_API_KEYを、あなたがゲットした本当のキーに置き換えてください。 -
画像と指示を指定:
if __name__ == "__main__":って書いてある場所で、target_image_urlとmodification_promptの2つの変数を自分用に書き換えます。 -
スクリプトを実行: ターミナルで
python batch_edit.pyって入力して実行!
あとはターミナルを見てるだけ。処理の進み具合がリアルタイムで表示されていきますよ。もし一気にバッチ処理したいなら、画像のURLと指示文をリストにして、edit_image_with_text関数をループで呼び出せばOKです。
これでもう、面倒な単純作業の地獄から解放されますね!さあ、今すぐ試してみましょう!
Discussion