순서
1. 비율 축소 적용
2. 이미지 생성 및 저장(Thumbnailator 라이브러리 사용)
1. 비율 축소 적용
원본 이미지 크기를 개발자가 지정한 비율에 따라 축소되도록 보완했습니다.
먼저 bo_image를 선언 및 초기화한 코드 아래에 비율을 저장할 변수를 선언합니다. 비율은 소수점 값으로도 지정할 수 있도록 double 타입으로 했습니다.
double ratio = 3;
원본 이미지 비율을 지정 값으로 줄이기 위해선 원본 이미지 너비와 높이를 위에서 지정한 비율로 나누면 됩니다.
해당 작업을 위해 원본 이미지의 너비와 높이를 알아내야 하는데, BufferedImage 클래스의 getWidth(), getHeight() 메서드를 사용하면 됩니다.
원본 이미지인 bo_image 객체에 getWidth(), getHeight() 메서드를 호출 후 지정한 비율로 나누어 변수 width와 height에 대입합니다.
/* 비율 */
double ratio = 3;
/* 너비, 높이 */
int width = (int) (bo_image.getWidth() / ratio);
int height = (int) (bo_image.getHeight() / ratio);
ratio는 double 타입이기 때문에 나눴을 때 double 값으로 반환됩니다. 파라미터에 부여해야 할 너비와 높이는 int 형이어야 하기 때문에 int로 형변환을 했습니다.
썸네일 이미지가 가져야 할 너비와 높이를 얻은 후 해당 값들이 필요로하는 파라미터에 인자로 부여합니다.
BufferedImage bt_image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
graphic.drawImage(bo_image, 0, 0,width,height, null);
작성한 코드가 정상적으로 동작하는지 테스트 해봅니다.
2. 이미지 생성 및 저장(Thumbnailator 라이브러리 사용)
maven repository에서 thumbnailator를 검색하여 해당 라이브러리를 찾은 후 pom.xml에 추가합니다.
<!-- thumbnail -->
<!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.13</version>
</dependency>
ImageIO를 통한 썸네일 생성 코드처럼 try-catch 문 안에 작성합니다.
Thumbnails.of(saveFile).size(width, height).toFile(thumbnailFile);
이렇게 하면 ImageIO를 통한 코드 작성보다 간단히 썸네일을 생성할 수 있습니다.
'😎 STS3 Spring 쇼핑몰' 카테고리의 다른 글
STS3 쇼핑몰 프로젝트[24] 상품 이미지 업로드(이미지 정보 뷰 반환2) - 6 (0) | 2022.09.27 |
---|---|
STS3 쇼핑몰 프로젝트[24] 상품 이미지 업로드(이미지 정보 뷰 반환) - 6 (0) | 2022.09.27 |
STS3 쇼핑몰 프로젝트[24] 상품 이미지 업로드(썸네일 생성 및 저장) - 5 (0) | 2022.09.26 |
STS3 쇼핑몰 프로젝트[24] 상품 이미지 업로드(파일 저장) - 4 (0) | 2022.09.25 |
STS3 쇼핑몰 프로젝트[24] 상품 이미지 업로드(저장 폴더 생성) - 3 (0) | 2022.09.25 |