java缩放图片

 知识点:AffineTransform 类表示 2D 仿射变换,它执行从 2D 坐标到其他 2D 坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系列平移 (translation)、缩放 (scale)、翻转 (flip)、旋转 (rotation) 和错切 (shear) 来构造仿射变换。

AffineTransformOp此类使用仿射转换来执行从源图像或 Raster 中 2D 坐标到目标图像或 Raster 中 2D 坐标的线性映射。

    BufferedImage

    filter(BufferedImage src, BufferedImage dst)

    转换源 BufferedImage 并将结果存储在目标 BufferedImage 中。

     

 

  
  
  
  
  1. 1.应用一:  
  2. public void test01(){  
  3.         try {  
  4.             File fi = new File("D:/1.jpg"); //大图文件  
  5.             File fo = new File("D:/2.jpg"); //将要转换出的小图文件  
  6.  
  7.             //创建一个AffineTransform对象  
  8.             AffineTransform transform = new AffineTransform();  
  9.             //从大图文件中得到BufferedImage对象              
  10.             BufferedImage bis = ImageIO.read(fi);  
  11.  
  12.             int w = bis.getWidth();  
  13.             int h = bis.getHeight();  
  14.             //double scale = (double)w/h;  
  15.  
  16.             //修改mw值,更改缩放大小  
  17.             int scale = 120;  
  18.  
  19.             int nw = scale;  
  20.             int nh = (nw * h) / w;  
  21.             if(nh>scale) {  
  22.                 nh = scale;  
  23.                 nw = (nh * w) / h;  
  24.             }  
  25.  
  26.             double sx = (double)nw / w;  
  27.             double sy = (double)nh / h;  
  28.  
  29.             //实现缩放,sx沿着x轴的缩放因子;sy沿着y轴的缩放因子  
  30.             transform.setToScale(sx,sy);  
  31.  
  32.             AffineTransformOp ato = new AffineTransformOp(transform, null);  
  33.  
  34.             //重新创建一个BufferedImage对象  
  35.             BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);  
  36.              //执行转换  
  37.              ato.filter(bis,bid);  
  38.             //保存图像  
  39.             ImageIO.write(bid, "jpeg", fo);  
  40.         } catch(Exception e) {  
  41.             e.printStackTrace();  
  42.         }  
  43.     }  
  44.  

 

你可能感兴趣的:(java,职场,休闲,图形变换,缩放图片)