如何从Java中获取JPEG编码器的压缩图像数据

时间:2009-09-24 11:32:32

标签: java io jpeg codec

我想使用JPEG编码器压缩图像,而不是将其写入我想将压缩数据传递给另一个应用程序的文件。我的问题是我可以压缩数据,但不知道如何获得压缩的图像数据。我正在使用此代码:

 out = new FileOutputStream ( filename );
 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder ( out );
 JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam ( bi );
 param.setQuality ( 0.3f, false );  
 encoder.setJPEGEncodeParam ( param );
 encoder.encode ( bi );
 out.close();

2 个答案:

答案 0 :(得分:5)

ByteArrayOutputStream将允许您访问字节。

 ByteArrayOutputStream out = new ByteArrayOutputStream (  );
 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder ( out );
 JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam ( bi);
 param.setQuality ( 0.3f, false );  
 encoder.setJPEGEncodeParam ( param );
 encoder.encode (bi);
 out.close(); // a no-op on ByteArrayOutputStream
 byte[] data = out.toByteArray();

答案 1 :(得分:2)

使用ByteArrayOutputStream代替FileOutputStream。然后,您可以通过toByteArray()获取字节。