
목표 1: 이미지 처리를 한 번에 최대 50장까지 가능하도록 제한하는 코드 추가목표 2: 한 번에 두 장 이상의 이미지 처리 시 zip 파일로 압축하는 코드 추가목표 3: 다중 이미지 처리 API 통합
목표 1
- 이미지 처리를 한 번에 최대 50장까지 가능하도록 제한하는 코드 추가하는 것은 매우 간단하다.
- 다만, 현재 보유하고 있는 이미지가 많지 않아서 임시로 로직을 최대 3장까지로 작성하였고
Postman에서 form-data에 이미지 파일 4개를 한 번에 첨부하여 API를 호출하였을 때 에러를 정상적으로 반환하였다.
목표 2
- 고려사항
1) 이미지 처리 API 호출 시 이번에 처리한 이미지만 zip 파일로 변환해야 한다.
2) 변환된 zip 파일의 이름은 항상 고유하게 식별되어야 한다.
- 구현 1
- 이미지 처리 함수를 통과한 results에서 filename을 추출한다.
- image_routes.py
- 구현 2
- 원하는 경로에 고유한 파일명으로 압축하여 저장한다.
- image_routes.py
- file_utils.py
- 결과
- 두 장의 이미지를 담아서 API를 호출하면 아래와 같이 응답을 받을 수 있다.
POSThttp://localhost:5000/api/remove-bg/u2net-hp/bulk
목표 3
- 단일 처리 API는 필요없기 때문에
/api/remove-bg/u2net-hp/single과/api/remove-bg/u2net-hp/bulk를/api/remove-bg/u2net-hp로 통합하고자 한다.
- 구현
/api/remove-bg/u2net-hp/single을 지우고/api/remove-bg/u2net-hp/bulk를/api/remove-bg/u2net-hp로 변경하였다.
- 에러 발생
- 500 상태 코드와 html 코드가 반환되었다.
POSThttp://localhost:5000/api/remove-bg/u2net-hp
- 원인 분석 1
- console
- 기존 코드
filenames = [result['processed_image']['filename'] for result in results]
- 아쉽게도 이 내용만으로는 에러를 해결할 수 없을 것 같다.
- 원인 분석 2
- 코드 수정 전 벌크 처리 API 호출 시 응답을 확인해 보니 응답에 단일 처리 API가 포함되어 있는 것을 확인할 수 있다.
POSThttp://localhost:5000/api/remove-bg/u2net-hp/bulk
- 코드 수정
- Metadata를 정의하는 함수에서 url_for() 함수의 첫 번째 argument를 수정한다.
- metadata_utils.py
- 결과 확인
- 정상적으로 동작한다.