I am attempting to read in a file and compress it. This works if the OutputStream is created using a file, but not a bytearrayoutputstream. This function returns a null byte array. Any suggestions? Thanks!
public static byte[] convertToJPEG(String filename)
{
try{
BufferedImage buffi = ImageIO.read(new File(filename));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter writer = writers.next();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(.75f);
writer.setOutput(ios);
writer.write(null, new IIOImage(buffi, null, null), param);
byte[] data = baos.toByteArray();
writer.dispose();
return data;
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}