Header Banner
GG Logo

Future Engineering

기술의 최전선을 기록합니다.

기술 자료/Library/Java 이미지 최적화 라이브러리 Thumbnailator

Java 이미지 최적화 라이브러리 Thumbnailator

Library약 1개월 전

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 애플리케이션에서 효율적이고 빠르게 이미지 최적화를 수행할 수 있습니다.

키워드

Java 이미지 라이브러리이미지 리사이징