이유
인생퍼즐 프로젝트에서 이미지 리사이징 기능을 추가하기로 했다. 저장 공간을 절약하고 Front에서 이미지를 불러올 때 더 빨리 불러올 수 있도록 하기 위해서였다.
사전 조사
이미지 리사이징을 하기 위해서 방법을 찾아봤다. 우리는 원하는 기능이 있으며 빠르게 처리할 수 있는가를 기준을 세워서 말이다. 잘 작성된 글을 찾아서 쉽게 결정할 수 있었다. 이후 퍼포먼스의 문제가 없다면 결정이 바뀌지는 않을 것 같다.
📌 이미지 리사이징 라이브러리와 속도 측정 결과
Marvin – 361ms
Imgscalr – 143ms
Thumbnailator – 547ms
java.awt.Graphics2D – 34ms
Image.getScaledInstance() – 235ms
참고 사이트 : https://www.baeldung.com/java-resize-image
코드 작성
✅ 속도가 가장 빠르다고 나온 java.awt.Graphics2D 라이브러리를 사용하기로 했다.
public void resize(int height, int width) throws IOException {
var original = ImageIO.read(new ByteArrayInputStream(bytes));
var resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = resizedImage.createGraphics();
graphics2D.drawImage(original, 0, 0, width, height, null);
graphics2D.dispose();
var newFileName = height + fileName;
var newBytes = bufferedImageToBytes(resizedImage);
}
'개발일지 > TIL' 카테고리의 다른 글
[230704] 즉시 로딩과 지연 로딩? (0) | 2023.07.04 |
---|---|
[230703] JavaServlet에 대해 이해하기 (0) | 2023.07.03 |
[230701] 쿠키, 세션, JWT ? (0) | 2023.07.01 |
[230630] @Bean과 @Component 차이? (0) | 2023.06.30 |
[230629] NullPointerException를 Status Code 400으로 내보내기 (0) | 2023.06.29 |