2009-09-24 57 views
0

我想使用JPEG编码器压缩图像,而不是将其写入文件我想将压缩数据传递给另一个应用程序。我的问题是我可以压缩数据,但不知道如何获取压缩的图像数据。我使用此代码:如何从Java中的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(); 

回答

5

A 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(); 
2

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