Just to ellucidate a little. I originally had code such as this shown
below. Whatever I pass into the setCompressionQuality() method (i.e. any of
0.05, 0.75, 0.95), results in a written file of 811kb, so I assumed this
code was bad. I don't see why tho.
The BufferedImage passed to this method is created with:
BufferedImage bi = ImageIO.read(new File(c.getInputFileName()));
public void myWrite(BufferedImage bi)
{
Iterator writers = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter writer = (ImageWriter)writers.next();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
System.err.println("getCompressionType: " + param.getCompressionType());
System.err.println("1 getCompressionQuality: " +
param.getCompressionQuality());
param.setCompressionQuality(0.05f);
System.err.println("2 getCompressionQuality: " +
param.getCompressionQuality());
try {
File ff = new File("c:/development/temp/xxx.jpg");
ImageOutputStream ios = ImageIO.createImageOutputStream(ff);
writer.setOutput(ios);
writer.write(bi);
} catch (IOException e) {
e.printStackTrace();
}
}
Many thanks
"Rupert Woodman" <NoEmail@com> wrote in message
news:46190521$0$8736$ed2619ec@ptn-nntp-reader02.plus.net...
Hi,
I have the following code:
String inputFilename = "input.jpg";
String outputFilename = "output.jpg";
BufferedImage bi = ImageIO.read(new File(inputFilename()));
ImageIO.write(bi, "jpg", new File(outputFilename));
The original file is about 1.5 meg in size, the written file is 240kb.
What I don't understand is what changes have been made to the image (I've
not specified any), and how I can control those changes?
Thank you for any thoughts you may have.
rgds
Rupert
the file if it exists. I think I did that because of the problem that
you are having. If the file exists and you write over it it doesn't get
smaller.