JAI를 이용한 썸네일 만들기

JAI를 이용한 썸네일 만들기

일단 필요한 jar 파일을 추가해 줘야 한다.
프로젝트 초기만 하더라도, nexus는 거의 필요없을거라 생각했는데,
프로젝트 진행할 수록 필요한 jar 파일 찾는것도 귀찮은 일 중에 하나가 되었다.

dependency를 검색할 수 있는 사이트 (Search by group, artifact or description)
http://mvnrepository.com/

Maven pom.xml

<dependency>
<groupId>javax.media</groupId>
<artifactId>jai_core</artifactId>
<version>1.1.3</version>
</dependency>

<dependency>
<groupId>javax.media</groupId>
<artifactId>jai_codec</artifactId>
<version>1.1.3</version>
</dependency>
JAI를 이용한 간단한 썸네일을 생성하는 코드이다.

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;

public class ThumbnailUtils {
public static void resize(String source, String destination, float scale)
throws IOException {
File newFile = new File(destination);
RenderedOp renderedOp = JAI.create(“fileload”, source);

BufferedImage bufferedImage = renderedOp.getAsBufferedImage();
int width = (int)(bufferedImage.getWidth() * scale);
int height = (int)(bufferedImage.getHeight() * scale);

BufferedImage bufferIm = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = bufferIm.createGraphics();
graphics2D.drawImage(bufferedImage, 0, 0, width, height, null);
ImageIO.write(bufferIm, “jpg”, newFile);
}

public static void resize(String source, String destination, int width, int height)
throws IOException {
File newFile = new File(destination);
RenderedOp renderedOp = JAI.create(“fileload”, source);

BufferedImage bufferedImage = renderedOp.getAsBufferedImage();
BufferedImage bufferIm = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = bufferIm.createGraphics();
graphics2D.drawImage(bufferedImage, 0, 0, width, height, null);
ImageIO.write(bufferIm, “jpg”, newFile);
}

public static void main(String[] args) throws IOException {
String source = “c:\\images\\stepup.jpg”;
String destination = “c:\\images\\stepup.thumbnail.jpg”;
float scale = 0.5f;

ThumbnailUtils.resize(source, “c:\\images\\stepup.400×400.jpg”, 400, 400);
ThumbnailUtils.resize(source, “c:\\images\\stepup.300×300.jpg”, 300, 300);
ThumbnailUtils.resize(source, “c:\\images\\stepup.200×200.jpg”, 200, 200);
ThumbnailUtils.resize(source, “c:\\images\\stepup.100×100.jpg”, 100, 100);
}
}

이미지 품질은 정말 기대 이하였다.
실제 500×500 크기를 4가지 경우로 생성해 보았는데 만족할 만한 수준은 아니다.
일단은 Imagemagik이 이미지 품질은 월등하다.
혹시 세부 설정등을 조절해 주면 좀더 나아질거 같은데, 일단 현재 수준에서 만족해야 겠다.


<500×500 원본 이미지>

 400×400

 300×300

 200×200

 100×100

PNG 포멧의 경우에는 자동적으로 내부적으로 gif로 변경된다.

Leave a Reply

Your email address will not be published. Required fields are marked *