전체 조회 시에 이미지가 업로드된 게시글들의 섬네일을 같이 뿌려주기로 하였다. 찾아보니 S3에 람다를 사용하여서도 하던데 나는 thumbnailator 를 이용하여 간단하게 구현했다.
썸네일 이미지?
- 작은 이미지 / 큰 파일을 열지 않고도 내용을 알 수 있도록 축소된 이미지
Dependency 추가
https://mavenlibs.com/maven/dependency/net.coobird/thumbnailator
<!-- https://mavenlibs.com/maven/dependency/net.coobird/thumbnailator -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.17</version>
</dependency>
S3Upload(Service)
- 썸네일 이미지 업로드하는 부분을 추가해준다.
// MultipartFile을 전달받아 File로 전환한 후 썸네일로 전환하여 S3에 업로드
public String uploadThumbFile (MultipartFile multipartFile, String thumbDirName) throws IOException{
//multipart로 받은 파일을 일단 convert 한 뒤에
File uploadFile = convert(multipartFile)
.orElseThrow(() -> new IllegalArgumentException("MultipartFile -> File 전환 실패"));
//Thumnailator를 이용하여 크기를 지정하여 썸네일을 만들어준다음
BufferedImage bufferedImage = Thumbnailator.createThumbnail(uploadFile, 256, 224);
//BufferedImage를 file로 변환해 준다음
File uploadThumbFile = new File("thumbs.jpg");
ImageIO.write(bufferedImage,"jpg",uploadThumbFile);
//convert한 파일은 local에 저장되므로 꼭 삭제해주기!
removeNewFile(uploadFile);
return upload(uploadThumbFile, thumbDirName); //S3에 업로드 해준다!
}
Service
- 비지니스 로직에도 추가를 해준다.
String meetingImage = null;
String meetingThumbImage = null;
if (image != null && !image.isEmpty()) {
try {
//메인 이미지 저장
meetingImage = s3Upload.uploadFiles(image, "images");
log.info(meetingImage);
//섬네일 이미지 저장
meetingThumbImage = s3Upload.uploadThumbFile(image, "thumbs");
log.info(meetingThumbImage);
} catch (IOException e) {
log.error(e.getMessage());
}
}
👉S3에 잘 들어온걸 확인할 수 있다!!! 용량도 원본이미지보다 작다!
'🌿SPRING > 🌱연습[SPRING]' 카테고리의 다른 글
[SPRING][JPA] Paging/Pagination - Pageable 객체 받아 사용하기 (0) | 2022.10.11 |
---|---|
[SPRING] JWT Exception (0) | 2022.10.06 |
[SPRING] AOP 예외 처리 / Global Exception Handler 전역 예외 처리 (0) | 2022.10.06 |
[SPRING] 모임 태그 - 태그 수정하기 (2) + bug fix (0) | 2022.09.28 |
[SPRING] 모임 태그 - 생성 시 태그 같이 넣기 (1) (0) | 2022.09.28 |