上傳一張畫作,選擇藝術風格,使用 Gemini AI 生成轉換後的新圖片
正在分析原始畫作...
已用時間: 0.0 秒
原始畫作
風格參考圖 1
風格參考圖 2
原始提示詞:
Ollama 優化後提示詞:
💡 提示:風格參考圖是選填,若不上傳,系統會依照下拉選單的風格提示詞進行轉換。
一次檢查 Flask、Gemini、Nano Banana、Ollama、ComfyUI 與圖片查詢 API。
你可以用 multipart/form-data 呼叫同一個 Gemini 生成 API。主圖欄位建議使用
artwork_image;
為了相容舊流程,也支援
person_image。
POST /face_lineart/api/gemini/generate
| 欄位 | 必填 | 說明 |
|---|---|---|
| artwork_image | 是 | 要轉換風格的原始畫作。也可使用舊欄位名 person_image。 |
| style_type | 否 | 風格代碼。若未傳 prompt,後端會依 style_type 自動套用預設提示詞;若 prompt 與 style_type 都未傳,預設使用 impressionism。 |
| prompt | 否 | 自訂生成提示詞。若有傳入,會覆蓋 style_type 或頁面預設的提示詞。 |
| style_image1 | 否 | 第一張風格參考圖。 |
| style_image2 | 否 | 第二張風格參考圖。 |
| use_ai_optimization | 否 | 1 或 0。預設 0;設為 1 時會使用 Ollama 分析原始畫作並優化提示詞。 |
| model | 否 | Gemini 模型,預設 gemini-3.1-flash-image。 |
impressionism,
fauvism,
cubism,
surrealism,
renaissance,
modernAnime
curl -X POST "http://34.81.2.129/face_lineart/api/gemini/generate" \
-F "artwork_image=@./artwork.jpg" \
-F "style_type=impressionism" \
-F "style_image1=@./reference-1.jpg" \
-F "use_ai_optimization=0" \
-F "model=gemini-3.1-flash-image"
{
"success": true,
"message": "圖片生成成功",
"data": {
"person_image": "/uploads/gemini_person_...",
"style_image1": "/uploads/gemini_style1_...",
"style_image2": null,
"result_image": "/uploads/gemini_result_...",
"ai_image_id": 123,
"building_ai_id": 123,
"original_prompt": "請將第一張原始畫作轉換為印象派風格...",
"enhanced_prompt": "Ollama 優化後提示詞...",
"model_used": "gemini-3.1-flash-image",
"style_type": "impressionism",
"source_type": "artwork",
"thinking_level": "high",
"thoughts": "模型推論過程(thinkingLevel=high 時回傳)..."
}
}
注意:模型固定以 thinkingLevel=high 生成,thoughts 為模型的思考過程文字;high 模式品質較佳但延遲與費用較高。
上傳圖片到伺服器並記錄到資料庫,之後可透過「最近 10 張圖片」API 查詢。
POST /face_lineart/api/images/upload
| 欄位 | 必填 | 說明 |
|---|---|---|
| image | 是 | 要上傳的圖片檔案。支援 png, jpg, jpeg, gif, webp。 |
| session_id | 否 | 選填的 session 識別碼,方便追蹤。 |
curl -X POST "http://34.81.2.129/face_lineart/api/images/upload" \
-F "image=@./photo.jpg" \
-F "session_id=test123"
{
"success": true,
"message": "圖片上傳成功",
"data": {
"id": 1,
"filename": "upload_1717590000000.jpg",
"url": "https://betery-2025.../uploads/upload_1717590000000.jpg",
"relative_url": "/uploads/upload_1717590000000.jpg"
}
}
取得最近透過上傳 API 上傳的 10 張圖片,按時間倒序排列。
GET /face_lineart/api/images/latest10
curl "http://34.81.2.129/face_lineart/api/images/latest10"
{
"success": true,
"data": {
"total": 3,
"images": [
{
"id": 5,
"filename": "upload_1717590000000.jpg",
"url": "https://betery-2025.../uploads/upload_...",
"relative_url": "/uploads/upload_...",
"session_id": "test123",
"created_at": "2026-06-05 12:00:00"
}
]
}
}
一次取得最新一張「透過上傳 API 上傳的圖片」以及最新一張「透過 Gemini 生成 API 產生的圖片」。
GET /face_lineart/api/images/latest-both
curl "http://34.81.2.129/face_lineart/api/images/latest-both"
{
"success": true,
"data": {
"latest_uploaded": {
"id": 10,
"filename": "upload_1717590000000.jpg",
"url": "https://betery-2025.../uploads/upload_...",
"relative_url": "/uploads/upload_...",
"session_id": "test123",
"source": "upload",
"created_at": "2026-06-08 12:00:00"
},
"latest_generated": {
"id": 8,
"filename": "gemini_result_1717580000.png",
"url": "https://betery-2025.../uploads/gemini_result_...",
"relative_url": "/uploads/gemini_result_...",
"session_id": "",
"source": "gemini",
"created_at": "2026-06-08 11:30:00"
}
}
}
目前沒有符合條件的圖片
準備中...