콘텐츠기획자의 IT입문서

SpringBoot 썸네일 crop하기 본문

Spring

SpringBoot 썸네일 crop하기

lazy_cat 2022. 3. 9. 00:50

이미지 업로드시 썸네일이

큰 이미지에서 작은이미지로 축소되다 보니 화질 깨짐 + 쪼그라드는 현상이 발생..!

라잌 this...

그래서 구글링을 해서 코드를 적용했는데

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

Comments