Reputation: 295
I want to compress an image using JPEG encoder and instead of writing it to a file I want to pass the compressed data to another application. My problem is that I can compress the data but don't know how to get that compressed image data. I am using this code :
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();
Upvotes: 0
Views: 1790
Reputation: 2895
A ByteArrayOutputStream will give you access to the bytes.
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();
Upvotes: 5
Reputation: 328594
Use a ByteArrayOutputStream
instead of a FileOutputStream
. Then, you can get the bytes via toByteArray()
.
Upvotes: 2