こんなんどかしいこと、あったことない?
商品の画像がたくさんあるのに、値段とかキャンペーンの文字が変わっちゃって…。Photoshopで一枚ずつ開いて、文字のレイヤーを探して、そーっと直して、名前つけて保存…。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キーを手に入れます。これがサービスを呼び出すための「合言葉」みたいなものです。
これで準備はバッチリ!めちゃくちゃ簡単じゃない?
実践編:コピペするだけで使える完成版コード
ってことで、ここに完成版の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のURL
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のURL
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です。
これでもう、面倒な単純作業の地獄から解放されるってわけ!さっそく試してみようよ!