图片缩略图

/**  
     * 缩放  
     * 
     * @param source  目标图片路径
     * @param targetW 宽度  
     * @param targetH 高度  
     */  
    public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {  
    	 // targetW,targetH分别表示目标长和宽  
    	 int type = source.getType();  
    	 BufferedImage target = null;  
    	 double sx = (double) targetW / source.getWidth();  
    	 double sy = (double) targetH / source.getHeight();  
    	 //这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放  
    	 //则将下面的if else语句注释即可  
    	 if(sx>sy)  {  
	    	 sx = sy;  
	    	 targetW = (int)(sx * source.getWidth());  
    	 }else{  
    		 sy = sx;  
    		 targetH = (int)(sy * source.getHeight());  
    	 }  
    	 if (type == BufferedImage.TYPE_CUSTOM) { //handmade  
	    	 ColorModel cm = source.getColorModel();  
	    	 WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH);  
	    	 boolean alphaPremultiplied = cm.isAlphaPremultiplied();  
	    	 target = new BufferedImage(cm, raster, alphaPremultiplied, null);  
    	 } else  
    		 target = new BufferedImage(targetW, targetH, type);  
    	 Graphics2D g = target.createGraphics();  
    	 //smoother than exlax:  
    	 g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );  
    	 g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));  
    	 g.dispose();  
    	 return target;  
    }  
    
    /**  
     * 缩放  
     * 
     * @param fromFileStr 源图片路径  
     * @param saveToFileStr 目标图片路径
     * @param height 高度  
     * @param width 宽度  
     */ 
    public static void resizeImage(String fromFileStr,String saveToFileStr,int width,int hight) throws Exception {  
    	 BufferedImage srcImage;  
    	 String imgType = "JPEG";  
    	 if (fromFileStr.toLowerCase().endsWith(".png")) {  
    		 imgType = "PNG";  
    	 }  
    	 File saveFile=new File(saveToFileStr);  
    	 File fromFile=new File(fromFileStr);  
    	 srcImage = ImageIO.read(fromFile);  
    	 if(width > 0 || hight > 0){  
    		 srcImage = resize(srcImage, width, hight);  
    	 }  
    	 ImageIO.write(srcImage, imgType, saveFile);  
   }

猜你喜欢

转载自zhihchen.iteye.com/blog/1893519