diff --git a/src/main/java/org/forkalsrud/album/web/PictureScaler.java b/src/main/java/org/forkalsrud/album/web/PictureScaler.java index 616f04e..3906e15 100644 --- a/src/main/java/org/forkalsrud/album/web/PictureScaler.java +++ b/src/main/java/org/forkalsrud/album/web/PictureScaler.java @@ -19,9 +19,11 @@ import java.util.concurrent.Future; import java.util.concurrent.PriorityBlockingQueue; import java.util.concurrent.TimeUnit; +import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; +import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriter; import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageOutputStream; @@ -234,12 +236,18 @@ public class PictureScaler { Iterator writers = ImageIO.getImageWritersByFormatName("jpg"); ImageWriter writer = writers.next(); + ImageWriteParam writeParam = writer.getDefaultWriteParam(); + writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); + writeParam.setCompressionQuality(0.95f); ByteArrayOutputStream bits = new ByteArrayOutputStream(); ImageOutputStream ios = ImageIO.createImageOutputStream(bits); writer.setOutput(ios); - writer.write(buf2); + + IIOImage image = new IIOImage(buf2, null, null); + writer.write(null, image, writeParam); + writer.dispose(); ios.flush(); CachedImage cimg = new CachedImage();