www.pudn.com > img_process_java.zip > ImageResize.java


import java.awt.Image; 
import java.io.*; 
import javax.media.jai.*; 
import com.sun.media.jai.codec.*; 
import java.awt.image.RenderedImage; 
import java.awt.geom.AffineTransform; 
import java.awt.image.renderable.ParameterBlock; 
 
//Usage: java ImageResize images\*.* 
public class ImageResize 
{ 
    public static void main(String[] args) 
    {	 
	 	 PlanarImage src, scaled_src; 
       for(int i = 0; i < args.length; i++) 
       { 
		  	 System.out.println(args[i].substring(7)); 
          src = JAI.create("fileload", args[i]); 
		    scaled_src = scaleImage(src); 
		    JPEGEncoder("resized_img/" + args[i].substring(7), scaled_src); 
       } 
    } 
 
    // Create the image encoder. 
    static void JPEGEncoder(String new_filename, PlanarImage scaled_src) 
    {		    
		  ImageEncoder encoder = null; 
    	  JPEGEncodeParam encodeParam = null; 
	 	  FileOutputStream out; 
		  out = createOutputStream(new_filename); 
	     encoder = ImageCodec.createImageEncoder("JPEG", out, encodeParam); 
        try  
		  { 
            encoder.encode(scaled_src); 
            out.close(); 
        }  
		  catch (IOException e)  
		  { 
            System.out.println("IOException at encoding.."); 
            System.exit(1); 
        } 
    } 
 
    //Scale original image to 100x100 
    static PlanarImage scaleImage(PlanarImage im) 
    { 
   	 float scale; 
	    PlanarImage new_im = null; 
   	 int height = im.getHeight(); 
	    int width = im.getWidth(); 
	    if(height>width) 
	    	 scale = (float)100/height; 
	    else 
	 	    scale = (float)100/width; 
	    //System.out.println("scaling image with scale: " + scale); 
	    if(scale<1) 
	    { 
	       // Create a ParameterBlock and specify the source and parameters 
    	    ParameterBlock pb = new ParameterBlock(); 
	       pb.addSource(im);                     // The source image 
    	    pb.add(scale);                        // The xScale 
	       pb.add(scale);                        // The yScale 
    	    pb.add(0.0F);                         // The x translation 
	       pb.add(0.0F);                         // The y translation 
    	    pb.add(new InterpolationNearest());   // The interpolation 
 
	       // Create the scale operation 
    	    new_im = JAI.create("scale", pb, null); 
	    } 
	    else 
	   	   new_im = im; 
 
	    return new_im; 
    } 
 
    //Create the output file stream to store the scaled image 
    static private FileOutputStream createOutputStream(String outFile)  
	 { 
        FileOutputStream out = null; 
        try  
		  { 
            out = new FileOutputStream(outFile); 
        }  
		  catch(IOException e)  
		  { 
            System.out.println("IOException."); 
            System.exit(1); 
        } 
 
        return out; 
    } 
 
}//end of class JPEGWriter