java生成缩略图

转自:http://wing929.iteye.com/blog/185508

//将图按比例缩小。
     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;
         }
     
         public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight)
         throws Exception {
         BufferedImage srcImage;
         // String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
         String imgType = "JPEG";
         if (fromFileStr.toLowerCase().endsWith(".png")) {
             imgType = "PNG";
         }
         // System.out.println(ex);
         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);

     }
     
     public static void main (String argv[]) {
         try{
         //参数1(from),参数2(to),参数3(宽),参数4(高)
             saveImageAsJpg("C:\\Documents and Settings\\xugang\\桌面\\tmr-06.jpg",
                     "C:\\Documents and Settings\\xugang\\桌面\\2.jpg",
                     120,120);
         } catch(Exception e){
             e.printStackTrace();
         }

     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值