首页 > Java开发 > Java图片压缩

Java图片压缩

Java图片压缩,直接上代码:

  1. import java.awt.Image;   
  2. import java.awt.image.BufferedImage;   
  3. import java.io.File;   
  4. import java.io.FileNotFoundException;   
  5. import java.io.FileOutputStream;   
  6. import java.io.IOException;   
  7.      
  8. import javax.imageio.ImageIO;   
  9.      
  10. import com.sun.image.codec.jpeg.JPEGCodec;   
  11. import com.sun.image.codec.jpeg.JPEGEncodeParam;   
  12. import com.sun.image.codec.jpeg.JPEGImageEncoder;   
  13.      
  14. /** 
  15.  * 图片压缩工具类 
  16.  * @author QQ 433647 众志成铖 
  17.  * 
  18.  */  
  19. public class ImageZipUtil {   
  20.      
  21.     /** 
  22.      * 等比例压缩图片文件<br> 先保存原文件,再压缩、上传 
  23.      * @param oldFile  要进行压缩的文件 
  24.      * @param newFile  新文件 
  25.      * @param width  宽度 //设置宽度时(高度传入0,等比例缩放) 
  26.      * @param height 高度 //设置高度时(宽度传入0,等比例缩放) 
  27.      * @param quality 质量 
  28.      * @return 返回压缩后的文件的全路径 
  29.      */   
  30.     public static String zipImageFile(File oldFile,File newFile, int width, int height,   
  31.             float quality) {   
  32.         if (oldFile == null) {   
  33.             return null;   
  34.         }   
  35.         try {   
  36.             /** 对服务器上的临时文件进行处理 */   
  37.             Image srcFile = ImageIO.read(oldFile);   
  38.             int w = srcFile.getWidth(null);   
  39.         //  System.out.println(w);   
  40.             int h = srcFile.getHeight(null);   
  41.         //  System.out.println(h);   
  42.             double bili;   
  43.             if(width>0){   
  44.                 bili=width/(double)w;   
  45.                 height = (int) (h*bili);   
  46.             }else{   
  47.                 if(height>0){   
  48.                     bili=height/(double)h;   
  49.                     width = (int) (w*bili);   
  50.                 }   
  51.             }   
  52.             /** 宽,高设定 */   
  53.             BufferedImage tag = new BufferedImage(width, height,   
  54.                     BufferedImage.TYPE_INT_RGB);   
  55.             tag.getGraphics().drawImage(srcFile, 00, width, height, null);   
  56.             //String filePrex = oldFile.getName().substring(0, oldFile.getName().indexOf('.'));   
  57.             /** 压缩后的文件名 */   
  58.             //newImage = filePrex + smallIcon+  oldFile.getName().substring(filePrex.length());   
  59.      
  60.             /** 压缩之后临时存放位置 */   
  61.             FileOutputStream out = new FileOutputStream(newFile);   
  62.      
  63.             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   
  64.             JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);   
  65.             /** 压缩质量 */   
  66.             jep.setQuality(quality, true);   
  67.             encoder.encode(tag, jep);   
  68.             out.close();   
  69.      
  70.         } catch (FileNotFoundException e) {   
  71.             e.printStackTrace();   
  72.         } catch (IOException e) {   
  73.             e.printStackTrace();   
  74.         }   
  75.         return newFile.getAbsolutePath();   
  76.     }   
  77.      
  78.     /** 
  79.      * 按宽度高度压缩图片文件<br> 先保存原文件,再压缩、上传 
  80.      * @param oldFile  要进行压缩的文件全路径 
  81.      * @param newFile  新文件 
  82.      * @param width  宽度 
  83.      * @param height 高度 
  84.      * @param quality 质量 
  85.      * @return 返回压缩后的文件的全路径 
  86.      */   
  87.     public static String zipWidthHeightImageFile(File oldFile,File newFile, int width, int height,   
  88.             float quality) {   
  89.         if (oldFile == null) {   
  90.             return null;   
  91.         }   
  92.         String newImage = null;   
  93.         try {   
  94.             /** 对服务器上的临时文件进行处理 */   
  95.             Image srcFile = ImageIO.read(oldFile);   
  96.             int w = srcFile.getWidth(null);   
  97.         //  System.out.println(w);   
  98.             int h = srcFile.getHeight(null);   
  99.         //  System.out.println(h);   
  100.      
  101.             /** 宽,高设定 */   
  102.             BufferedImage tag = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);   
  103.             tag.getGraphics().drawImage(srcFile, 00, width, height, null);   
  104.             //String filePrex = oldFile.substring(0, oldFile.indexOf('.'));   
  105.             /** 压缩后的文件名 */   
  106.             //newImage = filePrex + smallIcon+ oldFile.substring(filePrex.length());   
  107.      
  108.             /** 压缩之后临时存放位置 */   
  109.             FileOutputStream out = new FileOutputStream(newFile);   
  110.      
  111.             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   
  112.             JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);   
  113.             /** 压缩质量 */   
  114.             jep.setQuality(quality, true);   
  115.             encoder.encode(tag, jep);   
  116.             out.close();   
  117.         } catch (FileNotFoundException e) {   
  118.             e.printStackTrace();   
  119.         } catch (IOException e) {   
  120.             e.printStackTrace();   
  121.         }   
  122.         return newImage;   
  123.     }  
  124. }  

本文固定链接: http://www.devba.com/index.php/archives/6483.html | 开发吧

报歉!评论已关闭.