java图片压缩工具类
直接上java图片压缩code:
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(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。