Re: ImageIO.write - compression
Rupert Woodman wrote:
That's interesting - thanks very much for the tip.
I've done that, but changing the compression quality between the 3 allowed
values (0.5, 0.75 & 0.95) results in the same size file - is that a surprise
to you? I expected that if I changed the compression quality to 0.95, I'd
have a larger file that if I used a value of 0.05 (I got that by reading the
Java doc on ImageWriteParam)
Many thanks
Now that I look at your code more carefully, you look to be missing some
pieces. Take a look at the code below.
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import javax.imageio.stream.*;
import javax.imageio.plugins.jpeg.*;
public class JPEGWriter {
public static void write(RenderedImage image, float quality,
File file) throws IOException {
ImageWriter writer = null;
Iterator iter = ImageIO.getImageWritersByFormatName("JPEG");
if (!iter.hasNext())
throw new IOException("No Writers Available");
writer = (ImageWriter)iter.next();
if (file.exists())
file.delete();
ImageOutputStream ios = ImageIO.createImageOutputStream(file);
writer.setOutput(ios);
JPEGImageWriteParam iwp = new JPEGImageWriteParam(null);
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(quality);
writer.write(null,new IIOImage(image,null,null),iwp);
ios.flush();
writer.dispose();
ios.close();
}
}
--
Knute Johnson
email s/nospam/knute/