Images of different formats like jpeg,png,tiff,bmp,fpx,pnm etc can be resized to a different size using Java Advanced Imaging
import java.io.*; import java.util.*; import java.awt.image.renderable.*; import javax.media.jai.*; import com.sun.media.jai.codec.*; import java.awt.image.RenderedImage; public class ImageResize{ String validFormats[] = {"BMP","GIF","FPX","JPG","PNG","PNM","TIFF","TIF","JPEG"}; static String destFolder = null; static String thumbNailFolder = null; static int imgWidth = 0; static int imgHeight = 0; public static void main(String args[])throws Exception{ Properties prop = new Properties(); File file = new File("JAIProps.properties"); FileInputStream fis = new FileInputStream(file); InputStream ins = fis; prop.load(ins); String srcFolder = prop.getProperty("SRC_FOLDER_PATH"); destFolder = prop.getProperty("DEST_FOLDER_PATH"); //thumbNailFolder = prop.getProperty("THUMBNAIL_FOLDER_PATH"); if(srcFolder .charAt(srcFolder .length()-1) != '/') { srcFolder = srcFolder + "/"; } imgWidth = Integer.parseInt(prop.getProperty("IMG_WIDTH")); imgHeight = Integer.parseInt(prop.getProperty("IMG_HEIGHT")); ImageResize imgResize = new ImageResize(); imgResize.imageProcess(srcFolder); } private void imageProcess(String src) { File file = new File(src); //File photos[] = file.listFiles(); File photos[] = getValidImages(src,validFormats); if(photos!= null && photos.length>0) { for(int i=0;i<photos.length; i++) { File imgFile = photos[i]; String fileName = imgFile.getName(); resizePhoto(src,fileName); } } } private void resizePhoto( String imgFolder,String fileName){ try{ InputStream ins = new FileInputStream(imgFolder+fileName); SeekableStream s = SeekableStream.wrapInputStream(ins, true); RenderedImage objImage = JAI.create( "stream", s); float width = objImage.getWidth(); float height = objImage.getHeight(); float photoFactor = Math.min(imgWidth/width, imgHeight/height); ParameterBlock pbPhoto = getParamBlock(objImage, photoFactor); RenderedImage objImage1 = JAI.create( "scale", pbPhoto ); String photoPath = destFolder+fileName; JAI.create("filestore", objImage1 , photoPath,null,null ); //float thumbnailFactor = Math.min(27/width, 36/height); //ParameterBlock pbThumb = getParamBlock(objImage, thumbnailFactor); //RenderedImage objImage2 = JAI.create( "scale", pbThumb ); //String thumbNailPath = thumbNailFolder +fileName; // JAI.create("filestore", objImage2 , thumbNailPath ,null,null ); } catch(FileNotFoundException fe) { System.out.println(fe.getMessage()); } catch(Exception ioe) { System.out.println("Exception ..."+ioe.getMessage()); } } private static ParameterBlock getParamBlock(RenderedImage objImage, float imgFactor) { Interpolation interp = Interpolation.getInstance( Interpolation.INTERP_BICUBIC ); ParameterBlock pb = new ParameterBlock(); pb.addSource(objImage); // The source image pb.add(imgFactor); // The xScale pb.add(imgFactor); // The yScale pb.add(0.0F); // The x translation pb.add(0.0F); // The y translation pb.add(interp); // The interpolation return pb; } /* * Method for fetching the image files with valid name and extension only. * Method: getValidImage * @param validFormats * @param strPersonId * @return File[] of valid files */ private static File[] getValidImages(String srcFolder,String[] validFormats){ File file = new File(srcFolder); FilenameFilter onlyValidImg = new ImageFilter(validFormats); return file.listFiles(onlyValidImg); } } //..................................Class ImageFilter................................................................ /* Class to filter the files which are of valid formats and corresponding to the personID * This class implements FilenameFilter * */ class ImageFilter implements FilenameFilter{ boolean validFileFlag; String validFormats[]; ImageFilter(String validFormats[]){ this.validFormats = validFormats; } /* * Method which returns true if the files fit into the criteria given, like valid extension and format * Method: accept * @param dir * @param name * @return boolean true or false */ public boolean accept(File dir, String name){ String extension = null; if(name.indexOf(".") == -1) return validFileFlag; if(name.indexOf(".")!= -1) extension = name.substring(name.indexOf(".")+1); //System.out.println("ImageFilter class........"+personIdInName +" - "+extension); if((null != extension && "" != extension) ) { for(int i=0; i<validFormats.length; i++){ if(extension.equalsIgnoreCase(validFormats[i])){ validFileFlag = true; break; } else{ validFileFlag = false; } } } return validFileFlag; } }