from openai import OpenAI
import base64
import os
client = OpenAI(
api_key="AIHUBMIX_API_KEY", # バックエンドで生成したキー "sk-***" に置き換えてください
base_url="https://aihubmix.com/v1"
)
prompt = """redesign poster of the movie [Black Swan], 3D cartoon, smooth render, bright tone, 2:3 portrait."""
result = client.images.generate(
model="gpt-image-1",
prompt=prompt,
n=1, # 一度に生成する画像の数、最大10枚
size="1024x1536", # 1024x1024 (正方形), 1536x1024 (3:2横長), 1024x1536 (2:3縦長), auto (デフォルト)
quality="high", # high, medium, low, auto (デフォルト)
moderation="low", # low, auto (デフォルト) openaiパッケージのアップグレードが必要 📍
background="auto", # transparent, opaque, auto (デフォルト)
)
print(result.usage)
# ファイル名のプレフィックスと保存ディレクトリを定義
output_dir = "." # 他のディレクトリを指定できます
file_prefix = "image_gen"
# 出力ディレクトリが存在することを確認
os.makedirs(output_dir, exist_ok=True)
# 返されたすべての画像データを反復処理
for i, image_data in enumerate(result.data):
image_base64 = image_data.b64_json
if image_base64: # b64_jsonが空でないことを確認
image_bytes = base64.b64decode(image_base64)
# --- ファイル名の衝突処理ロジック開始 ---
current_index = i
while True:
# 自動インクリメント付きのファイル名を構築
file_name = f"{file_prefix}_{current_index}.png"
file_path = os.path.join(output_dir, file_name) # 完全なファイルパスを構築
# ファイルが存在するかどうかを確認
if not os.path.exists(file_path):
break # ファイル名が衝突しないので、ループを抜ける
# ファイル名が衝突するので、インデックスを増やす
current_index += 1
# 見つかった一意のfile_pathに画像をファイルとして保存
with open(file_path, "wb") as f:
f.write(image_bytes)
print(f"画像は以下に保存されました:{file_path}")
else:
print(f"画像 {i} のデータが空なので、保存をスキップします。")