1 22 23 package de.jwi.jgallery.toolkit; 24 25 import java.awt.Container ; 26 import java.awt.Graphics2D ; 27 import java.awt.Image ; 28 import java.awt.MediaTracker ; 29 import java.awt.RenderingHints ; 30 import java.awt.Toolkit ; 31 import java.awt.image.BufferedImage ; 32 import java.io.BufferedOutputStream ; 33 import java.io.File ; 34 import java.io.FileOutputStream ; 35 import java.io.IOException ; 36 import java.io.Serializable ; 37 38 import com.sun.image.codec.jpeg.JPEGCodec; 39 import com.sun.image.codec.jpeg.JPEGEncodeParam; 40 import com.sun.image.codec.jpeg.JPEGImageEncoder; 41 42 import de.jwi.jgallery.IThumbnailWriter; 43 44 48 public class ToolkitThumbnailWriter implements IThumbnailWriter, Serializable { 49 50 public void write(File infile, File outfile, float compressionQuality, int thumbBounds) throws IOException { 51 Image image = Toolkit.getDefaultToolkit().getImage(infile.toURL()); 52 MediaTracker mediaTracker = new MediaTracker (new Container ()); 53 mediaTracker.addImage(image, 0); 54 try { 55 mediaTracker.waitForID(0); 56 } catch (InterruptedException e) { 57 return; 58 } 59 60 int imageWidth = image.getWidth(null); 61 int imageHeight = image.getHeight(null); 62 63 float thumbRatio = (float) thumbBounds 64 / Math.max(imageWidth, imageHeight); 65 66 int thumbWidth = (int) (imageWidth * thumbRatio); 67 int thumbHeight = (int) (imageHeight * thumbRatio); 68 69 BufferedImage thumbImage = new BufferedImage (thumbWidth, 72 thumbHeight, BufferedImage.TYPE_INT_RGB); 73 Graphics2D graphics2D = thumbImage.createGraphics(); 74 graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 75 RenderingHints.VALUE_INTERPOLATION_BICUBIC); 76 graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null); 77 79 BufferedOutputStream out = new BufferedOutputStream (new 80 FileOutputStream (outfile)); 81 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 82 JPEGEncodeParam param = encoder. 83 getDefaultJPEGEncodeParam(thumbImage); 84 85 param.setQuality(compressionQuality, false); 86 encoder.setJPEGEncodeParam(param); 87 encoder.encode(thumbImage); 88 89 out.close(); 90 } 91 92 } | Popular Tags |