跳至主要内容

T8_0619

實作:

  1. 登入:google帳號登入、一般mail登入,視情況加入第三種登入
  2. 圖片:
    • 使用者點選上傳、下載及回傳至「歷史圖片頁面」(上傳至雲端)等按鈕後要能實際執行。
    • 若有進行圖片的處理,畫面上要能同時顯示原圖及已修改之圖。
    • 若是在「照片調整頁面」則需將面板的參數記下,且若有點選「AI調整」按鈕,則應將AI所使用參數直接覆蓋原本面板之參數。
  3. 功能使用:
    • 圖片調整頁面:當「AI調整」按鈕按下及「去背」之checkBox勾選,呼叫對應之模型進行處理,且將處理後之圖片回傳至前端顯示,且同時將調整的參數數值丟回去前端,使使用者可以看見AI所調整之數值。
    • 圖片修復頁面:點選「模糊調整」、「褪色修復」、「殘缺修補」等按鈕時呼叫對應之模型進行處理,且將處理後之圖片回傳至前端顯示。若點選「一鍵修復」則將所有模型跑過一遍。

整理成功能:

  1. 登入
  • Google登入 ✅
    • 登入:在一開始點擊google登入時,去firebase Authentication拿取idToken,寫成一個http only的cookie,再將使用者資訊寫進資料表(User)中。
    • cookie驗證:驗證cookie將使用者資料傳回前端畫面上。
  • 一般mail登入 ❌
  • 第三種登入(尚未製作) ❌
  1. 圖片存取
  • 上傳 ✅
    • 將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());
    }
    }
  1. 圖片修復
  • 圖片修復 ✅(去模糊)
    • 將圖片傳至FastAPI,進行修圖,到時可能會根據傳入的數字(1,2,3,4)將三個功能和全部執行對應到此if-else,進行各自的圖片修復操作。
  • 圖片修圖 ❌

注意事項: 資料庫建立需求


建議:

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