欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java图片压缩工具类

程序员文章站 2024-03-08 10:41:46
直接上java图片压缩code: import java.awt.image; import java.awt.image.bufferedimage;...

直接上java图片压缩code:

import java.awt.image; 
import java.awt.image.bufferedimage; 
import java.io.bytearrayoutputstream; 
import java.io.ioexception; 
import java.io.inputstream; 
  
import javax.imageio.imageio; 
  
public class imageprocess { 
 /** 
  * 图片 
  */ 
 private image img;  
 /** 
  * 宽度 
  */ 
 private int width;  
 /** 
  * 高度 
  */ 
 private int height;  
 /** 
  * 文件格式 
  */ 
 private string imageformat; 
 /** 
  * 构造函数 
  * @throws exception 
  */  
 public imageprocess(inputstream in,string filename) throws exception{  
   //构造image对象  
   img = imageio.read(in);  
   //得到源图宽  
   width = img.getwidth(null); 
   //得到源图长  
   height = img.getheight(null); 
   //文件格式 
   imageformat = filename.substring(filename.lastindexof(".")+1); 
 }  
 /** 
  * 按照宽度还是高度进行压缩 
  * @param w int 最大宽度 
  * @param h int 最大高度 
  */  
 public byte[] resizefix(int w, int h) throws ioexception {  
   if (width / height > w / h) {  
     return resizebywidth(w);  
   } else {  
     return resizebyheight(h);  
   }  
 }  
 /** 
  * 以宽度为基准,等比例放缩图片 
  * @param w int 新宽度 
  */  
 public byte[] resizebywidth(int w) throws ioexception {  
   int h = (int) (height * w / width);  
   return resize(w, h);  
 }  
 /** 
  * 以高度为基准,等比例缩放图片 
  * @param h int 新高度 
  */  
 public byte[] resizebyheight(int h) throws ioexception {  
   int w = (int) (width * h / height);  
   return resize(w, h);  
 }  
 /** 
  * 强制压缩/放大图片到固定的大小 
  * @param w int 新宽度 
  * @param h int 新高度 
  */  
 public byte[] resize(int w, int h) throws ioexception {  
   // scale_smooth 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢  
   bufferedimage image = new bufferedimage(w, h,bufferedimage.type_int_rgb );   
   image.getgraphics().drawimage(img, 0, 0, w, h, null); // 绘制缩小后的图  
   bytearrayoutputstream baos = new bytearrayoutputstream(); 
   imageio.write(image, imageformat, baos); 
   return baos.tobytearray(); 
 }  
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。