/** * Thumbnail class * ½æ³×ÀÏ À̹ÌÁö »ý¼º * * @see com.cjon.common * @version 1.0 * @author woo jin ho, 2008-01-02 */ package com.cjon.common; import java.awt.Image; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.*; import java.io.IOException; import java.io.OutputStream; import java.io.FileOutputStream; import javax.swing.ImageIcon; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import Acme.JPM.Encoders.GifEncoder; import org.apache.log4j.Logger; import java.io.File; import javax.imageio.ImageIO; import javax.media.jai.JAI; import javax.media.jai.RenderedOp; public class Thumbnail { protected static final Logger logger = Logger.getLogger(DtConst.LOG4J_PROP); private String orig; // ¿øº»À̹ÌÁö (Æнº¿Í ÆÄÀϸí) private String thumb; // ÀÛ°Ô¸¸µé À̹ÌÁö (Æнº¿Í ÆÄÀϸí) private int maxDim; // »çÀÌÁî // ÀÛÀº À̹ÌÁö¸¦ ¸¸µç´Ù.(ÆÄÀÏÀÌÀúÀåµÈ ½ÇÁ¦°æ·Î, »õ·Î¿îÀ̸§, °¡·Î»çÀÌÁî) public void createThumbnail(String orig, String thumb, int maxDim) { try { // Get the image from a file. Image inImage = new ImageIcon(orig).getImage(); // Determine the scale. double scale = (double)maxDim/(double)inImage.getHeight(null); if (inImage.getWidth(null) > inImage.getHeight(null)) { scale = (double)maxDim/(double)inImage.getWidth(null); } // Determine size of new image. // One of them // should equal maxDim. int scaledW = (int)( scale*inImage.getWidth(null)); int scaledH = (int)( scale*inImage.getHeight(null)); //½æ³×ÀÏ À̹ÌÁö ÆÄÀÏ File save = new File(thumb); //loadÆÄÀÏÀº ¿øº»À̹ÌÁö ÆÄÀÏ RenderedOp °´Ã¼ »ý¼º RenderedOp rOp = JAI.create("fileload", orig); //BufferImage °´Ã¼¸¦ ¾ò¾î¿È BufferedImage im = rOp.getAsBufferedImage(); if(orig.toLowerCase().indexOf(".gif")!=-1) { Image imgTarget = im.getScaledInstance(scaledW, scaledH, Image.SCALE_SMOOTH); int pixels[] = new int[scaledW*scaledH]; PixelGrabber pg = new PixelGrabber(imgTarget, 0, 0, scaledW, scaledH, pixels, 0, scaledW); try { pg.grabPixels(); }catch(Exception e) { logger.debug("Thumbnail", e); } //¸Þ¸ð¸®¿¡ À̹ÌÁö °ø°£À» »ý¼º BufferedImage thumbImg = new BufferedImage(scaledW, scaledH, BufferedImage.TYPE_INT_RGB); thumbImg.setRGB(0,0,scaledW, scaledH, pixels, 0, scaledW); //¸Þ¸ð¸®¿¡ ±×¸° À̹ÌÁö¸¦ ÆÄÀÏ·Î ÀúÀå ImageIO.write(thumbImg, "jpg", save); } else { //¸Þ¸ð¸®¿¡ À̹ÌÁö °ø°£À» »ý¼º BufferedImage thumbImg = new BufferedImage(scaledW, scaledH, BufferedImage.TYPE_INT_RGB); //¹öÆÛ À̹ÌÁö·Î ºÎÅÍ Graphics2D °´Ã¼¸¦ ¾ò¾î³¿ Graphics2D g2 = thumbImg.createGraphics(); //¸Þ¸ð¸®ÀÇ À̹ÌÁö °ø°£¿¡ ¿øº» À̹ÌÁö¸¦ °¡·Î ,¼¼·Î ¸¸Å­ ±×¸°´Ù. g2.drawImage(im, 0, 0, scaledW, scaledH, null); //¸Þ¸ð¸®¿¡ ±×¸° À̹ÌÁö¸¦ ÆÄÀÏ·Î ÀúÀå ImageIO.write(thumbImg, "png", save); } } catch (IOException e) { if(logger.isDebugEnabled()){ logger.debug("====[Thumbnail]========== >>>> ["+e+"]"); } e.printStackTrace(); } } }