蓝魔

为什么我的眼里常含泪水,因为有一个算法我不会。。。。。

图片缩放

  1. package test;  
  2. import java.io.*;  
  3. import java.util.Date;  
  4. import java.awt.*;  
  5. import java.awt.image.*;  
  6. import javax.imageio.ImageIO;  
  7. import com.sun.image.codec.jpeg.*;  
  8. /** 
  9.  * 图片压缩处理 
  10.  * @author 崔素强 
  11.  */  
  12. public class ImgCompress {  
  13.     private Image img;  
  14.     private int width;  
  15.     private int height;  
  16.     @SuppressWarnings("deprecation")  
  17.     public static void main(String[] args) throws Exception {  
  18.         System.out.println("开始:" + new Date().toLocaleString());  
  19.         ImgCompress imgCom = new ImgCompress("C:\\temp\\pic123.jpg");  
  20.         imgCom.resizeFix(400400);  
  21.         System.out.println("结束:" + new Date().toLocaleString());  
  22.     }  
  23.     /** 
  24.      * 构造函数 
  25.      */  
  26.     public ImgCompress(String fileName) throws IOException {  
  27.         File file = new File(fileName);// 读入文件  
  28.         img = ImageIO.read(file);      // 构造Image对象  
  29.         width = img.getWidth(null);    // 得到源图宽  
  30.         height = img.getHeight(null);  // 得到源图长  
  31.     }  
  32.     /** 
  33.      * 按照宽度还是高度进行压缩 
  34.      * @param w int 最大宽度 
  35.      * @param h int 最大高度 
  36.      */  
  37.     public void resizeFix(int w, int h) throws IOException {  
  38.         if (width / height > w / h) {  
  39.             resizeByWidth(w);  
  40.         } else {  
  41.             resizeByHeight(h);  
  42.         }  
  43.     }  
  44.     /** 
  45.      * 以宽度为基准,等比例放缩图片 
  46.      * @param w int 新宽度 
  47.      */  
  48.     public void resizeByWidth(int w) throws IOException {  
  49.         int h = (int) (height * w / width);  
  50.         resize(w, h);  
  51.     }  
  52.     /** 
  53.      * 以高度为基准,等比例缩放图片 
  54.      * @param h int 新高度 
  55.      */  
  56.     public void resizeByHeight(int h) throws IOException {  
  57.         int w = (int) (width * h / height);  
  58.         resize(w, h);  
  59.     }  
  60.     /** 
  61.      * 强制压缩/放大图片到固定的大小 
  62.      * @param w int 新宽度 
  63.      * @param h int 新高度 
  64.      */  
  65.     public void resize(int w, int h) throws IOException {  
  66.         // SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢  
  67.         BufferedImage image = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB );   
  68.         image.getGraphics().drawImage(img, 00, w, h, null); // 绘制缩小后的图  
  69.         File destFile = new File("C:\\temp\\456.jpg");  
  70.         FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流  
  71.         // 可以正常实现bmp、png、gif转jpg  
  72.         JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
  73.         encoder.encode(image); // JPEG编码  
  74.         out.close();  
  75.     }  
  76. }  

 

运行后在C盘temp下生成一个465.jpg,像素大小为600*400,像素大小是我指定的。用时也就是一两秒的事情,注意,我这张图片是10M的,压缩后是40.5KB
一些细节事项可以参考代码中的注释。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lijun2247900158/article/details/46801767
文章标签: 图片缩放
上一篇spring AOP面向切面编程的四种实现方式
下一篇Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
想对作者说点什么? 我来说一句

关于图片缩放的若干问题的解决

2009年12月01日 2.09MB 下载

Jquery图片缩放

2010年12月09日 50KB 下载

自定义图片缩放。。。。

2018年05月29日 34.99MB 下载

图片缩放代码,等比例显示图片

2008年11月07日 610B 下载

jquery图片缩放

2011年09月26日 781KB 下载

qt实现图片缩放

2017年11月14日 8KB 下载

java图片缩放器源码.rar

2010年04月29日 30KB 下载

android imageview 图片缩放

2013年03月16日 173KB 下载

android图片缩放放大

2012年09月02日 1.16MB 下载

UIScrollView代理触摸实现_图片缩放

2015年03月25日 8.27MB 下载

没有更多推荐了,返回首页

关闭
关闭