X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2Fmetadata%2FfileTypes%2FPicture.java;h=9604211781e43e96558a800bb70e1a0e6a3ce389;hb=55413b4e5a1c3fb76d77e20ea67fd29853083c7e;hp=50b39d5beb6d1f011bee18422d33c64fbe793822;hpb=ef718ada685feafaacaa498f2f128731ed019d58;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/fileTypes/Picture.java b/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/fileTypes/Picture.java index 50b39d5..9604211 100755 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/fileTypes/Picture.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/fileTypes/Picture.java @@ -17,8 +17,7 @@ import eu.svjatoslav.meviz.htmlindexer.ImageFormatError; import eu.svjatoslav.meviz.htmlindexer.Utils; import eu.svjatoslav.meviz.htmlindexer.metadata.Dimension; -import javax.imageio.ImageIO; -import javax.imageio.ImageReader; +import javax.imageio.*; import javax.imageio.stream.FileImageOutputStream; import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageOutputStream; @@ -28,8 +27,10 @@ import java.awt.image.BufferedImage; import java.awt.image.FilteredImageSource; import java.awt.image.ImageFilter; import java.awt.image.ImageProducer; -import java.io.*; +import java.io.File; +import java.io.IOException; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import static eu.svjatoslav.meviz.htmlindexer.Utils.getBufferedImage; @@ -135,7 +136,6 @@ public class Picture extends AbstractFile { final java.awt.Dimension targetDimensions = getTargetThumbnailDimension( sourceImageDimension, preferredTargetDimensions); - final OutputStream out = new FileOutputStream(outputFile); final Image scaledImage = scaleImage(inputImage, targetDimensions.width, targetDimensions.height); @@ -148,8 +148,19 @@ public class Picture extends AbstractFile { g.drawImage(scaledImage, 0, 0, null); g.dispose(); - ImageIO.write(bufferedImage, "jpg", out); - out.close(); + + + ImageOutputStream ios = ImageIO.createImageOutputStream(outputFile); + Iterator iter = ImageIO.getImageWritersByFormatName("webp"); + ImageWriter writer = iter.next(); + ImageWriteParam iwp = writer.getDefaultWriteParam(); + iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); + iwp.setCompressionType("Lossy"); + iwp.setCompressionQuality(0.8f); + + writer.setOutput(ios); + writer.write(null, new IIOImage(bufferedImage,null,null),iwp); + writer.dispose(); } private static void makeGifThumbnail( @@ -234,7 +245,7 @@ public class Picture extends AbstractFile { * relative to designated thumbnails directory within parent directory. */ public String getRelativeThumbnailFileName(final Dimension targetDimension) { - String thumbnailExtension = "gif".equalsIgnoreCase(getFileExtension()) ? "gif" : "jpeg"; + String thumbnailExtension = "gif".equalsIgnoreCase(getFileExtension()) ? "gif" : "webp"; return FilePathParser.getFileNameWithoutExtension(fileName) + " (" + computeThumbnailHash(targetDimension) + ")." + thumbnailExtension;