Spring
SpringBoot 썸네일 crop하기
lazy_cat
2022. 3. 9. 00:50
이미지 업로드시 썸네일이
큰 이미지에서 작은이미지로 축소되다 보니 화질 깨짐 + 쪼그라드는 현상이 발생..!
그래서 구글링을 해서 코드를 적용했는데
Scalr이 먹지 않아서 뭐지???
한 30분 동안 뭐가 문제인지 몰랐음ㅎㅎ
없으니까 못 쓰지 바보야......ㅠ
build.gradle 에 아래 내용을 추가해준다 ^^
implementation group: 'org.imgscalr', name: 'imgscalr-lib', version: '4.2'
implementation group: 'net.coobird', name: 'thumbnailator', version: '0.4.17'
만약 maven이라면, 아래의 의존성을 추가하면 된다고 한다.
<dependency>
<groupId>org.imgscalr</groupId>
<artifactId>imgscalr-lib</artifactId>
<version>4.2</version>
</dependency>
그리고 다시 시작했는데
또 다시 난관에 부딪힘 ㅋㅋㅋㅋㅋ
왜 이번엔 너무 쪼그라 들었죠?
분명.... CSS에서 준 썸네일 div의 넓이랑 높이로 했는데요?
그리서 그냥 코드를 보고 자체적으로 느낌상
이게 필요하겠구나~ 했던 것만 빼고 다른 것은 다 지워버렸다.
필요했던 것
1. 넓이, 높이 중 짧은 것 기준으로 정방향으로 crop 하는 코드
2. crop 된 것 기준 이미지 작게 저장해서 화질 깨짐 줄이기
private void makeThumbnail(String thumbnailName, File saveFile, int width, int height) throws IOException {
File thumbnailFile = new File(getFullPath(thumbnailName));
BufferedImage readImage = ImageIO.read(saveFile);
int w = readImage.getWidth();
int h = readImage.getHeight();
int min = Math.min(w, h);
BufferedImage tmpImage = Scalr.crop(readImage, (w-min)/2, (h-min)/2, min, min);
BufferedImage thumbImage = Scalr.resize(tmpImage, Scalr.Method.AUTOMATIC, Scalr.Mode.FIT_TO_HEIGHT, 178);
ImageIO.write(thumbImage, "png", thumbnailFile);
}
성공~!
쪼그라들지도 않고, 잘 크롭됐따 :)
역시 과유불급... 아무거나 막 가져다 붙이면
안하느니만 못하다 ^_ㅠ
근데 보여지는 건데 그냥 프론트에서 하는 방법은 없나?
백엔드 너무 어려워......
참고했던 코드: https://offbyone.tistory.com/114