How to get the compressed image data from JPEG encoder in Java
Question
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();
Solution
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();
OTHER TIPS
Use a ByteArrayOutputStream
instead of a FileOutputStream
. Then, you can get the bytes via toByteArray()
.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow