+
+
+ ImageOutputStream ios = ImageIO.createImageOutputStream(outputFile);
+ Iterator<ImageWriter> 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(
+ File inputFile, File outputFile, java.awt.Dimension preferredTargetDimensions) throws IOException {
+ ImageIcon imageIcon = new ImageIcon(IOHelper.getFileContents(inputFile));
+
+ final java.awt.Dimension sourceImageDimension = new java.awt.Dimension(
+ imageIcon.getIconWidth(), imageIcon.getIconHeight());
+
+ System.out.println("Source image dimensions:" + sourceImageDimension);
+
+ final java.awt.Dimension targetDimensions = getTargetThumbnailDimension(
+ sourceImageDimension, preferredTargetDimensions);
+
+ System.out.println("Desired target image dimensions:" + targetDimensions);
+
+ ImageReader reader = ImageIO.getImageReadersByFormatName("gif").next();
+ ImageInputStream stream = ImageIO.createImageInputStream(inputFile);
+ reader.setInput(stream);
+
+ Utils.ImageFrame[] frames = Utils.readGIF(reader);
+ for (Utils.ImageFrame frame : frames) {
+ Image scaleImage = scaleImage(frame.image, targetDimensions.width, targetDimensions.height);
+ BufferedImage bImage = new BufferedImage(
+ targetDimensions.width, targetDimensions.height, BufferedImage.TYPE_INT_ARGB);
+ Graphics2D bGr = bImage.createGraphics();
+ bGr.drawImage(scaleImage, 0, 0, null);
+ bGr.dispose();
+ frame.image = bImage;