java高质量缩放图片的示例代码
可按照比例缩放,也可以指定宽高
importcom.sun.image.codec.jpeg.JPEGImageEncoder; importcom.sun.image.codec.jpeg.JPEGCodec; importcom.sun.image.codec.jpeg.JPEGEncodeParam; importjavax.swing.*; importjava.io.File; importjava.io.FileOutputStream; importjava.io.IOException; importjava.awt.*; importjava.awt.image.BufferedImage; importjava.awt.image.Kernel; importjava.awt.image.ConvolveOp; publicclassImageUtil{ /** * *@paramoriginalFile原文件 *@paramresizedFile压缩目标文件 *@paramnewWidth压缩后的图片宽度 *@paramquality压缩质量(0到1之间,越高质量越好) *@throwsIOException */ publicstaticvoidresize(FileoriginalFile,FileresizedFile, intnewWidth,floatquality)throwsIOException{ if(quality>1){ thrownewIllegalArgumentException( "Qualityhastobebetween0and1"); } ImageIconii=newImageIcon(originalFile.getCanonicalPath()); Imagei=ii.getImage(); ImageresizedImage=null; intiWidth=i.getWidth(null); intiHeight=i.getHeight(null); //比例缩放 if(iWidth>iHeight){ resizedImage=i.getScaledInstance(newWidth,(newWidth*iHeight) /iWidth,Image.SCALE_SMOOTH); }else{ resizedImage=i.getScaledInstance((newWidth*iWidth)/iHeight, newWidth,Image.SCALE_SMOOTH); } //指定宽高 Imagetemp=newImageIcon(resizedImage).getImage(); //Createthebufferedimage. BufferedImagebufferedImage=newBufferedImage(temp.getWidth(null), temp.getHeight(null),BufferedImage.TYPE_INT_RGB); //Copyimagetobufferedimage. Graphicsg=bufferedImage.createGraphics(); //Clearbackgroundandpainttheimage. g.setColor(Color.white); g.fillRect(0,0,temp.getWidth(null),temp.getHeight(null)); g.drawImage(temp,0,0,null); g.dispose(); //Soften. floatsoftenFactor=0.05f; float[]softenArray={0,softenFactor,0,softenFactor, 1-(softenFactor*4),softenFactor,0,softenFactor,0}; Kernelkernel=newKernel(3,3,softenArray); ConvolveOpcOp=newConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,null); bufferedImage=cOp.filter(bufferedImage,null); //Writethejpegtoafile. FileOutputStreamout=newFileOutputStream(resizedFile); //EncodesimageasaJPEGdatastream JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out); JPEGEncodeParamparam=encoder .getDefaultJPEGEncodeParam(bufferedImage); param.setQuality(quality,true); encoder.setJPEGEncodeParam(param); encoder.encode(bufferedImage); }//Exampleusage publicstaticvoidmain(String[]args)throwsIOException{ FileoriginalImage=newFile("C:P7.gif"); resize(originalImage,newFile("c:P7-0.jpg"),150,0.7f); resize(originalImage,newFile("c:P7-1.jpg"),150,1f); } }
以上就是java高质量缩放图片的示例代码的详细内容,更多关于Java缩放图片的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。