잡탕1 - IT2012. 9. 16. 18:03

선잡설

만들고자 하는것이 갤러리 홈페이지다 보니 이미지의 썸네일 이미지도 쿼리티가 무척이나 중요하다.

php로 구현된것은 제로보드등 여러곳에서 볼 수 있지만 java 로 된건 별로 보지 못했다.





본잡설

1. JPEGImageEncoder 를 이용한 리사이즈

public static void createThumbnail(String soruce, String target, int targetW) throws Exception 

    Image imgSource = new ImageIcon(soruce).getImage(); 


    int oldW = imgSource.getWidth(null); 

    int oldH = imgSource.getHeight(null); 


    int newW = targetW; 

    int newH = (targetW * oldH) / oldW; 


    //Image imgTarget = imgSource.getScaledInstance(newW, newH, Image.SCALE_AREA_AVERAGING); 

Image imgTarget = imgSource.getScaledInstance(newW, newH, Image.SCALE_SMOOTH); 

    

    int pixels[] = new int[newW * newH]; 


    PixelGrabber pg = new PixelGrabber(imgTarget, 0, 0, newW, newH, pixels, 0, newW); 

    pg.grabPixels(); 


    BufferedImage bi = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_RGB); 

    bi.setRGB(0, 0, newW, newH, pixels, 0, newW); 


    FileOutputStream fos = new FileOutputStream(target); 


    JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(fos); 


    JPEGEncodeParam jep = jpeg.getDefaultJPEGEncodeParam(bi); 

    jep.setQuality(1, true); 


    jpeg.encode(bi, jep); 


    fos.close(); 

}

(출처:http://www.ibm.com/developerworks/kr/library/j-jspdwj/index.html#N1015A 

        http://blog.naver.com/PostView.nhn?blogId=j79sw&logNo=110037089984&redirect=Dlog&widgetTypeCall=true )


음.. 나름 깔끔하다. JAI 로 한방 리사이즈보단 이미지가 괜찮다.

중간에 주석이 있는 부분 getScaledInstance() 메소드의 마지막 파라메터로 쿼리티를 조정할 수 있다.

다 해본결과 SCALE_SMOOTH 가 가장 좋다.

리사이즈 본이 원래 그렇지만 섬네일 이미지가 약간 블러를 먹은 듯 선예도가 떨어진다.




후잡설

방법들은 알게되는대로 계속 올리겠다.

Posted by pearl짓거리전문