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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。