Sydney
Sydney

Reputation: 295

How to get the compressed image data from JPEG encoder in Java

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

Answers (2)

Billy Bob Bain
Billy Bob Bain

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

Aaron Digulla
Aaron Digulla

Reputation: 328594

Use a ByteArrayOutputStream instead of a FileOutputStream. Then, you can get the bytes via toByteArray().

Upvotes: 2

Related Questions