Better quality in JPEG compression on the way out.

This commit is contained in:
Knut Forkalsrud 2010-06-03 03:08:42 -07:00
parent cad37df18b
commit 3a4ac78bb6

View file

@ -19,9 +19,11 @@ import java.util.concurrent.Future;
import java.util.concurrent.PriorityBlockingQueue; import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam; import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader; import javax.imageio.ImageReader;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter; import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.ImageOutputStream; import javax.imageio.stream.ImageOutputStream;
@ -234,12 +236,18 @@ public class PictureScaler {
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg"); Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter writer = writers.next(); ImageWriter writer = writers.next();
ImageWriteParam writeParam = writer.getDefaultWriteParam();
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(0.95f);
ByteArrayOutputStream bits = new ByteArrayOutputStream(); ByteArrayOutputStream bits = new ByteArrayOutputStream();
ImageOutputStream ios = ImageIO.createImageOutputStream(bits); ImageOutputStream ios = ImageIO.createImageOutputStream(bits);
writer.setOutput(ios); writer.setOutput(ios);
writer.write(buf2);
IIOImage image = new IIOImage(buf2, null, null);
writer.write(null, image, writeParam);
writer.dispose();
ios.flush(); ios.flush();
CachedImage cimg = new CachedImage(); CachedImage cimg = new CachedImage();