官網說明:

官網示範code:
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
client = genai.Client()
prompt = (
"Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme"
)
response = client.models.generate_content(
model="gemini-2.5-flash-image-preview",
contents=[prompt],
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = Image.open(BytesIO(part.inline_data.data))
image.save("generated_image.png")實作
import os
import json
from google import genai
import base64
import time
dir_api = r"D:\Python code\api_key"
basename_api = "api_key.json"
path_api = os.path.join(dir_api, basename_api)
dir_img = r"D:\Python code\vision"
basename_img = "leone-africano-2.jpg"
path_img = os.path.join(dir_img, basename_img)
main_fname = basename_img.split(".")[0]
#"leone-africano-2"
with open(path_api, "r", encoding="utf-8") as f:
api_key = json.load(f)["Gemini"]["api_key"]
#'AIzaSyD...'
with open(path_img, "rb") as img_f:
img_bytes = img_f.read()
base64_str = base64.b64encode(img_bytes).decode('utf-8')
model = "gemini-2.5-flash-image-preview" #"gemini-2.5-flash"
client = genai.Client(api_key=api_key)
prompt = """製作圖片中角色的1/7比例商業化模型手辦,
以寫實風格呈現,置於真實環境中的電腦桌上。
模型底座為 圓形透明壓克力材質,且上面不含任何文字。
電腦螢幕畫面顯示該模型在 ZBrush建模的製作過程。
電腦螢幕旁擺放一個 圓角設計、正面帶透明視窗的包裝盒,盒內模型清晰可見
請回傳一張圖片,不要只描述,輸出需為 inline_data 形式的 base64 編碼圖片數據。
"""
#prompt = "Google Gemini 是什麼?請用繁體中文簡要回答。"
image_part = {
"inline_data": {
"mime_type": "image/jpeg",
"data": img_bytes #base64_str
}
}
response = client.models.generate_content(
model=model,
contents=[
{"role": "user",
"parts": [{"text": prompt}, image_part]}
]
)
print(response.text)
b64_str = response.candidates[0].content.parts[1].inline_data.data
mime = response.candidates[0].content.parts[1].inline_data.mime_type
# 這是 API 回報的檔案格式 #'image/png'
ext = mime.split("/")[1] # 'png'
# base64 -> bytes
img_bytes = base64.b64decode(b64_str)
#b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x05\x80'
# 存檔
strftime = time.strftime("%Y%m%d_%H%M%S")
path_ex = os.path.join(dir_img, f"{main_fname}_output_{strftime}.{ext}")
with open(path_ex, "wb") as f:
f.write(img_bytes)
print(f"圖片已存為:\n {path_ex}")輸出結果:

做幾張圖而已就會RESOURCE_EXHAUSTED,
並非程式錯誤:
errors.APIError.raise_for_response(response)
File "C:\Python311\Lib\site-packages\google\genai\errors.py", line 105, in raise_for_response
raise ClientError(status_code, response_json, response)
google.genai.errors.ClientError: 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': 'Resource has been exhausted (e.g. check quota).', 'status': 'RESOURCE_EXHAUSTED'}}看消耗的tokens
response.usage_metadata

推薦hahow線上學習python: https://igrape.net/30afN






![Python: 如何使用pandas.to_numeric ( df[‘numbers’], errors=’coerce’) 將非數值型資料轉為NaN? df[‘numbers’].describe() 簡述統計資料 Python: 如何使用pandas.to_numeric ( df[‘numbers’], errors=’coerce’) 將非數值型資料轉為NaN? df[‘numbers’].describe() 簡述統計資料](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2024/05/20240501052102_0.png?quality=90&zoom=2&ssl=1&resize=350%2C233)
![一文搞懂Python pandas.DataFrame去重:df.drop_duplicates() 與 df[~df.duplicated()] 的等價、差異與最佳實踐 一文搞懂Python pandas.DataFrame去重:df.drop_duplicates() 與 df[~df.duplicated()] 的等價、差異與最佳實踐](https://i0.wp.com/savingking.com.tw/wp-content/uploads/2025/08/20250808202701_0_66f9bc.png?quality=90&zoom=2&ssl=1&resize=350%2C233)


近期留言