java实现图片压缩的思路与代码
本文实例为大家分享了java实现图片压缩的相关代码,供大家参考,具体内容如下
importjava.awt.Image;
importjava.awt.image.BufferedImage;
importjava.io.ByteArrayOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjavax.imageio.ImageIO;
publicclassImageProcess{
/**
*图片
*/
privateImageimg;
/**
*宽度
*/
privateintwidth;
/**
*高度
*/
privateintheight;
/**
*文件格式
*/
privateStringimageFormat;
/**
*构造函数
*@throwsException
*/
publicImageProcess(InputStreamin,StringfileName)throwsException{
//构造Image对象
img=ImageIO.read(in);
//得到源图宽
width=img.getWidth(null);
//得到源图长
height=img.getHeight(null);
//文件格式
imageFormat=fileName.substring(fileName.lastIndexOf(".")+1);
}
/**
*按照宽度还是高度进行压缩
*@paramwint最大宽度
*@paramhint最大高度
*/
publicbyte[]resizeFix(intw,inth)throwsIOException{
if(width/height>w/h){
returnresizeByWidth(w);
}else{
returnresizeByHeight(h);
}
}
/**
*以宽度为基准,等比例放缩图片
*@paramwint新宽度
*/
publicbyte[]resizeByWidth(intw)throwsIOException{
inth=(int)(height*w/width);
returnresize(w,h);
}
/**
*以高度为基准,等比例缩放图片
*@paramhint新高度
*/
publicbyte[]resizeByHeight(inth)throwsIOException{
intw=(int)(width*h/height);
returnresize(w,h);
}
/**
*强制压缩/放大图片到固定的大小
*@paramwint新宽度
*@paramhint新高度
*/
publicbyte[]resize(intw,inth)throwsIOException{
//SCALE_SMOOTH的缩略算法生成缩略图片的平滑度的优先级比速度高生成的图片质量比较好但速度慢
BufferedImageimage=newBufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(img,0,0,w,h,null);//绘制缩小后的图
ByteArrayOutputStreambaos=newByteArrayOutputStream();
ImageIO.write(image,imageFormat,baos);
returnbaos.toByteArray();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,轻松实现图片压缩操作。