최근에 이미지를 입력 받아 썸네일 이미지를 만들어주는 서비스를 만들게 되었는데.
JAVA 기본 패키지에 있는 AffineTransform 클래스를 이용해서 resize 했더니...
원본 이미지의 사이즈가 크다보니, 썸네일 이미지가 심하게 깨지는게 너무 맘에 안들어
이것저것 찾아보기 시작했다.
JAI도 적용 해보았으나 그닥 나아지지 않았다.
이후 발견하고 적용한 내용은... 와우~ 정말 좋은 화질의 썸네일이 만들어졌다.
우선 만들어진 썸네일 비교부터.
순서대로 기존 AffineTransform, 새로만든놈, 페이스북 썸네일
기존에 비해 월등히 좋아진 썸네일을 발견 할수 있다. 페이스북과 비교해도 별 차이가 없을 정도
바로 http://code.google.com/p/java-image-scaling/ 이놈.
사용법도 간단하다.
java-image-scaling-0.8.5.jar 와 Filters.jar 를 build path에 등록하고
protected boolean scale( BufferedImage srcImage, String destPath, String imageFormat, int destWidth, int destHeight) {
boolean result = true;
try {
ResampleOp resampleOp = new ResampleOp( destWidth, destHeight );
resampleOp.setUnsharpenMask( AdvancedResizeOp.UnsharpenMask.Soft );
BufferedImage rescaledImage = resampleOp.filter( srcImage, null );
File destFile = new File( destPath );
ImageIO.write(rescaledImage, imageFormat, destFile );
} catch (IOException e) {
logger.error("Improved Image scaling falied!");
logger.error(e.getMessage() );
result = false;
}
return result;
}
대충 요정도?
