You can do image resizing in java by using imgscalr . You can create thumbnails easily , by providing desired width and height . Here is the Pom Dependency for imgscalr :
<dependency> <groupId>org.imgscalr</groupId> <artifactId>imgscalr-lib</artifactId> <version>4.2</version> <type>jar</type> <scope>compile</scope> </dependency>Or, you can download it with this link . Here is the sample java program to convert an image into 50*50 thumbnail .
package com.datamigration.main; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import org.imgscalr.Scalr; import org.imgscalr.Scalr.Method; /** * * * @author Abhishek Somani * */ public class ThumbnailExample { public static void main(String[] args) throws IOException { long startTime = System.currentTimeMillis(); File f = new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum.jpg"); BufferedImage img = ImageIO.read(f); // load image //Quality indicate that the scaling implementation should do everything // create as nice of a result as possible , other options like speed // will return result as fast as possible //Automatic mode will calculate the resultant dimensions according //to image orientation .so resultant image may be size of 50*36.if you want //fixed size like 50*50 then use FIT_EXACT //other modes like FIT_TO_WIDTH..etc also available. BufferedImage thumbImg = Scalr.resize(img, Method.QUALITY,Mode.AUTOMATIC, 50, 50, Scalr.OP_ANTIALIAS); //convert bufferedImage to outpurstream ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(thumbImg,"jpg",os); //or wrtite to a file File f2 = new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum_thumb.jpg"); ImageIO.write(thumbImg, "jpg", f2); System.out.println("time is : " +(System.currentTimeMillis()-startTime)); } }Post Comments and Suggestions !!