我想使用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();
答案 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()
获取字节。