AI 畫作風格轉換

上傳一張畫作,選擇藝術風格,使用 Gemini AI 生成轉換後的新圖片

檢查 Gemini API 狀態...

1 原始畫作

2 風格參考圖 1(選填)

3 風格參考圖 2(選填)

4 轉換風格與生成提示詞

(使用 Ollama 分析原始畫作,自動生成更完整的畫面描述)

使用說明

  1. 上傳一張要轉換風格的原始畫作
  2. 選擇想要轉換的藝術風格
  3. 可選上傳一張或兩張風格參考圖片(也可以不上傳)
  4. 確認或微調提示詞描述您想要的效果
  5. 點擊「開始生成」,等待 AI 處理
  6. 查看並下載生成的圖片

💡 提示:風格參考圖是選填,若不上傳,系統會依照下拉選單的風格提示詞進行轉換。

全部狀態檢查

一次檢查 Flask、Gemini、Nano Banana、Ollama、ComfyUI 與圖片查詢 API。

API 使用說明

你可以用 multipart/form-data 呼叫同一個 Gemini 生成 API。主圖欄位建議使用 artwork_image; 為了相容舊流程,也支援 person_image

Endpoint

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。

支援的 style_type

impressionism, fauvism, cubism, surrealism, renaissance, modernAnime

curl 範例

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 模式品質較佳但延遲與費用較高。

📤 圖片上傳 API

上傳圖片到伺服器並記錄到資料庫,之後可透過「最近 10 張圖片」API 查詢。

Endpoint

POST /face_lineart/api/images/upload

表單欄位

欄位 必填 說明
image 要上傳的圖片檔案。支援 png, jpg, jpeg, gif, webp。
session_id 選填的 session 識別碼,方便追蹤。

curl 範例

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"
  }
}

線上測試

🖼 最近 10 張上傳圖片 API

取得最近透過上傳 API 上傳的 10 張圖片,按時間倒序排列。

Endpoint

GET /face_lineart/api/images/latest10

curl 範例

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

一次取得最新一張「透過上傳 API 上傳的圖片」以及最新一張「透過 Gemini 生成 API 產生的圖片」。

Endpoint

GET /face_lineart/api/images/latest-both

curl 範例

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"
    }
  }
}

線上測試