/* Decompiled by Mocha from Thumbnail.class */ /* Originally compiled from Thumbnail.java */ package com.idega.util; import java.awt.Frame; import java.awt.Graphics2D; import java.awt.Image; import java.awt.MediaTracker; import java.awt.RenderingHints; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import com.idega.io.MemoryFileBuffer; import com.idega.io.MemoryOutputStream; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class Thumbnail { public Thumbnail() { } public static void main(String args[]) throws Exception { long start = System.currentTimeMillis(); if (args.length < 5) { System.err.println("Usage: java Thumbnail INFILE OUTFILE WIDTH HEIGHT QUALITY"); System.exit(1); } String fileName = args[0]; String thumbName = args[1]; int thumbWidth = Integer.parseInt(args[2]); int thumbHeight = Integer.parseInt(args[3]); int quality = Integer.parseInt(args[4]); createThumbnail(fileName, thumbName, thumbWidth, thumbHeight, quality); long end = System.currentTimeMillis(); System.out.println("scaling took "+((end-start)/1000)+" seconds"); System.exit(0); } public static void createThumbnail(String fileName, String thumbName, int thumbWidth, int thumbHeight, int quality) throws Exception { Image image = Toolkit.getDefaultToolkit().getImage(fileName); MediaTracker mediaTracker = new MediaTracker(new Frame()); mediaTracker.addImage(image, 0); mediaTracker.waitForID(0); double thumbRatio = (double)thumbWidth / thumbHeight; int imageWidth = image.getWidth(null); int imageHeight = image.getHeight(null); double imageRatio = (double)imageWidth / imageHeight; if (thumbRatio < imageRatio) { thumbHeight = (int)(thumbWidth / imageRatio); } else { thumbWidth = (int)(thumbHeight * imageRatio); } BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, 1); Graphics2D graphics2D = thumbImage.createGraphics(); graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(thumbName)); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage); quality = Math.max(0, Math.min(quality, 100)); //param.setQuality() param.setQuality((float)quality / 100, false); encoder.setJPEGEncodeParam(param); encoder.encode(thumbImage); } public static MemoryFileBuffer createMemoryJPEG(MemoryFileBuffer buf, int thumbWidth, int thumbHeight, int quality) throws Exception { Image image = Toolkit.getDefaultToolkit().createImage(buf.buffer()); MediaTracker mediaTracker = new MediaTracker(new Frame()); mediaTracker.addImage(image, 0); mediaTracker.waitForID(0); double thumbRatio = (double)thumbWidth / thumbHeight; int imageWidth = image.getWidth(null); int imageHeight = image.getHeight(null); double imageRatio = (double)imageWidth / imageHeight; if (thumbRatio < imageRatio) { thumbHeight = (int)(thumbWidth / imageRatio); } else { thumbWidth = (int)(thumbHeight * imageRatio); } BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, 1); Graphics2D graphics2D = thumbImage.createGraphics(); graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null); MemoryFileBuffer buffer = new MemoryFileBuffer(); MemoryOutputStream out = new MemoryOutputStream(buffer); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage); quality = Math.max(0, Math.min(quality, 100)); param.setQuality((float)quality / 100, false); encoder.setJPEGEncodeParam(param); encoder.encode(thumbImage); return buffer; } }