PngEncoder,它的主要功能是 把java的Image对象或者BufferedImage对象转换成Png格式,并且也有压缩功能。详细资料请参阅官方文档,我在这里给出一个代码的例子,供参考。
public static void handlePic(String sourceFile,String outFile,int w,int h)
{
try
{
long t1=System.currentTimeMillis();
w=80;h=80;
double ratioH=0.0;
double ratioW=0.0;
File file=new File(sourceFile);
File dbFile=new File(outFile);
BufferedImage srcPic=ImageIO.read(file);
Image itemp=srcPic.getScaledInstance(w,h,srcPic.SCALE_SMOOTH);
ratioW=((double)w)/srcPic.getWidth();
ratioH=((double)h)/srcPic.getHeight();
AffineTransformOp op=new AffineTransformOp(AffineTransform.getScaleInstance(ratioW,ratioH),null);
itemp=op.filter(srcPic,null);
{
try
{
long t1=System.currentTimeMillis();
w=80;h=80;
double ratioH=0.0;
double ratioW=0.0;
File file=new File(sourceFile);
File dbFile=new File(outFile);
BufferedImage srcPic=ImageIO.read(file);
Image itemp=srcPic.getScaledInstance(w,h,srcPic.SCALE_SMOOTH);
ratioW=((double)w)/srcPic.getWidth();
ratioH=((double)h)/srcPic.getHeight();
AffineTransformOp op=new AffineTransformOp(AffineTransform.getScaleInstance(ratioW,ratioH),null);
itemp=op.filter(srcPic,null);
PngEncoder encoder=new PngEncoder(itemp);
//encoder.setCompressionLevel(5);
encoder.setEncodeAlpha(false);
encoder.setCompressionLevel(9);
encoder.pngEncode();
byte[] result=encoder.pngEncode();
FileOutputStream fos=new FileOutputStream(outFile);
fos.write(result);
fos.close();
System.out.println(System.currentTimeMillis()-t1);
Thread.sleep(1000L);
}
catch(Exception e)
{
e.printStackTrace();
}
//encoder.setCompressionLevel(5);
encoder.setEncodeAlpha(false);
encoder.setCompressionLevel(9);
encoder.pngEncode();
byte[] result=encoder.pngEncode();
FileOutputStream fos=new FileOutputStream(outFile);
fos.write(result);
fos.close();
System.out.println(System.currentTimeMillis()-t1);
Thread.sleep(1000L);
}
catch(Exception e)
{
e.printStackTrace();
}
}