+ Reply to Thread
Results 1 to 2 of 2

Thread: Create Thumbnail of an image in Java

  1. #1
    Junior Member
    Join Date
    Feb 2012
    Posts
    10

    Create Thumbnail of an image in Java

    I'd like to create thumbnail of images , how can i do that ?
    Last edited by matrix; 11-12-2012 at 03:22 AM.

  2. #2
    Junior Member
    Join Date
    Jun 2012
    Posts
    15
    Here is a java code snippet on how to create an image Thumbnail
    Code:
               private void createThumbnail(String filename, int thumbWidth, int thumbHeight, int quality, String outFilename)
    	{
    		// load image from filename
    		Image image = Toolkit.getDefaultToolkit().getImage(filename);
    		MediaTracker mediaTracker = new MediaTracker(new Container());
    		mediaTracker.addImage(image, 0);
    		mediaTracker.waitForID(0);
    		// use this to test for errors at this point: System.out.println(mediaTracker.isErrorAny());
    
    		// determine thumbnail size from WIDTH and HEIGHT
    		double thumbRatio = (double)thumbWidth / (double)thumbHeight;
    		int imageWidth = image.getWidth(null);
    		int imageHeight = image.getHeight(null);
    		double imageRatio = (double)imageWidth / (double)imageHeight;
    		if (thumbRatio < imageRatio) {
    			thumbHeight = (int)(thumbWidth / imageRatio);
    		} else {
    			thumbWidth = (int)(thumbHeight * imageRatio);
    		}
    
    		// draw original image to thumbnail image object and
    		// scale it to the new size on-the-fly
    		BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
    		Graphics2D graphics2D = thumbImage.createGraphics();
    		graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    		graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
    
    		// save thumbnail image to outFilename
    		BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename));
    		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    		JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
    		quality = Math.max(0, Math.min(quality, 100));
    		param.setQuality((float)quality / 100.0f, false);
    		encoder.setJPEGEncodeParam(param);
    		encoder.encode(thumbImage);
    		out.close();
    	}
    Hope it works for you.

+ Reply to Thread

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts