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=184bac6a36745021fbaa5980ef415ebb5966b703;hpb=b0392ce321a1b82b0b14f8464aa9007268ead664;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 184bac6..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( @@ -166,8 +177,6 @@ public class Picture extends AbstractFile { System.out.println("Desired target image dimensions:" + targetDimensions); - FileInputStream fiStream = new FileInputStream(inputFile); - ImageReader reader = ImageIO.getImageReadersByFormatName("gif").next(); ImageInputStream stream = ImageIO.createImageInputStream(inputFile); reader.setInput(stream); @@ -175,12 +184,12 @@ public class Picture extends AbstractFile { Utils.ImageFrame[] frames = Utils.readGIF(reader); for (Utils.ImageFrame frame : frames) { Image scaleImage = scaleImage(frame.image, targetDimensions.width, targetDimensions.height); - BufferedImage bimage = new BufferedImage( + BufferedImage bImage = new BufferedImage( targetDimensions.width, targetDimensions.height, BufferedImage.TYPE_INT_ARGB); - Graphics2D bGr = bimage.createGraphics(); + Graphics2D bGr = bImage.createGraphics(); bGr.drawImage(scaleImage, 0, 0, null); bGr.dispose(); - frame.image = bimage; + frame.image = bImage; } ImageOutputStream output = new FileImageOutputStream(outputFile); @@ -236,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;