T8_0619
實作:
- 登入:google帳號登入、一般mail登入,視情況加入第三種登入
- 圖片:
- 使用者點選上傳、下載及回傳至「歷史圖片頁面」(上傳至雲端)等按鈕後要能實際執行。
- 若有進行圖片的處理,畫面上要能同時顯示原圖及已修改之圖。
- 若是在「照片調整頁面」則需將面板的參數記下,且若有點選「AI調整」按鈕,則應將AI所使用參數直接覆蓋原本面板之參數。
- 功能使用:
- 圖片調整頁面:當「AI調整」按鈕按下及「去背」之checkBox勾選,呼叫對應之模型進行處理,且將處理後之圖片回傳至前端顯示,且同時將調整的參數數值丟回去前端,使使用者可以看見AI所調整之數值。
- 圖片修復頁面:點選「模糊調整」、「褪色修復」、「殘缺修補」等按鈕時呼叫對應之模型進行處理,且將處理後之圖片回傳至前端顯示。若點選「一鍵修復」則將所有模型跑過一遍。
整理成功能:
- 登入
- Google登入 ✅
- 登入:在一開始點擊google登入時,去firebase Authentication拿取idToken,寫成一個http only的cookie,再將使用者資訊寫進資料表(User)中。
- cookie驗證:驗證cookie將使用者資料傳回前端畫面上。
- 一般mail登入 ❌
- 第三種登入(尚未製作) ❌
- 圖片存取
- 上傳 ✅
- 將cookie+圖片傳至後端,上傳至storage上面,在上傳前還會有檢查,若是使用者和圖片名稱在資料表中的相同的就只回傳圖片網址,否則舊上傳圖片至storage,並回傳圖片網址。
- 修改 ❌
- 刪除 ✅
- 將cookie+檔案名稱傳至後端,到資料表找到此圖片,將此圖片傳至Storage進行刪除圖片,若找不到圖片,就回傳找不到圖片。
private ResponseEntity<String> deleteImage(String fileName, String idTokenCookie) {
try {
String idToken = AuthUtil.extractIdToken(null, idTokenCookie);
FirebaseToken decodedToken = AuthUtil.verifyIdToken(idToken);
String userId = decodedToken.getUid();
Optional<Files> optionalFile = filesRepository.findByUser_UidAndName(userId, fileName);
if (optionalFile.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("找不到指定圖片");
}
Files file = optionalFile.get();
Bucket bucket = StorageClient.getInstance().bucket();
if (bucket.get(file.getObjectName()) != null) {
bucket.get(file.getObjectName()).delete();
}
filesRepository.delete(file);
return ResponseEntity.ok("圖片已成功刪除");
} catch (FirebaseAuthException e) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("無效的使用者憑證");
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.internalServerError().body("圖片刪除失敗: " + e.getMessage());
}
}
- 圖片修復
- 圖片修復 ✅(去模糊)
- 將圖片傳至FastAPI,進行修圖,到時可能會根據傳入的數字(1,2,3,4)將三個功能和全部執行對應到此if-else,進行各自的圖片修復操作。
- 圖片修圖 ❌
注意事項:

建議:
- 可以用更多的圖片在前端上進行測試RWD (Responsive Web Design)的部分。
- 訓練的時候,銳利度可以在下降一點。
- RGB、LCH、HSV,可以用其他的色彩空間來使用。