Java 이미지 최적화 라이브러리 Thumbnailator
Thumbnailator 소개
Thumbnailator는 Java 기반의 간편하고 강력한 이미지 처리 라이브러리로, 특히 이미지 리사이징 및 썸네일 제작에 최적화되어 있습니다. 직관적인 API로 빠른 개발이 가능하며, 다양한 이미지 형식을 지원합니다.
주요 특징
간결하고 명확한 API 제공
다양한 이미지 포맷 지원 (JPEG, PNG, GIF 등)
우수한 이미지 품질 유지
메모리 효율성이 뛰어나 서버 부하 최소화
설치 방법 (Maven)
다음 의존성을 Maven의 pom.xml 파일에 추가하여 설치합니다.
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.20</version>
</dependency>이미지 리사이징 예제
기본적인 썸네일 생성
Thumbnails.of(new File("original.jpg"))
.size(200, 200)
.toFile(new File("thumbnail.jpg"));이미지 품질 지정
Thumbnails.of("original.png")
.size(300, 300)
.outputFormat("jpg")
.outputQuality(0.8)
.toFile("optimized.jpg");이미지 리사이징 후 S3 업로드 예시
public void resizeAndUploadToS3(InputStream inputStream, String bucketName, String keyName) {
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
Thumbnails.of(inputStream)
.size(300, 300)
.outputFormat("jpg")
.outputQuality(0.85)
.toOutputStream(os);
byte[] bytes = os.toByteArray();
InputStream resizedInputStream = new ByteArrayInputStream(bytes);
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(bytes.length);
metadata.setContentType("image/jpeg");
s3Client.putObject(bucketName, keyName, resizedInputStream, metadata);
} catch (IOException e) {
e.printStackTrace();
}
}주의할 점
너무 낮은 품질 설정(
outputQuality)은 이미지 품질 저하를 유발할 수 있습니다.원본 이미지의 크기 및 비율에 따라 비율 유지 옵션(
keepAspectRatio) 설정도 고려해보세요.
Thumbnailator를 활용하여 Java 애플리케이션에서 효율적이고 빠르게 이미지 최적화를 수행할 수 있습니다.