用java advanced imaging(jai)
只要改参数就可以缩小图片的比例,楼主可以判断图像的大小判断是否已经符合比例jai的下载地址:
java advanced imaging:http://java.sun.com/products/java-media/jai/downloads/download-1_1_2_01.html
缩放的代码如下:
     import java.awt.Frame;
     import java.awt.image.renderable.ParameterBlock;
     import java.io.IOException;
     import javax.media.jai.*;
    
     import com.sun.media.jai.codec.FileSeekableStream;
     import javax.media.jai.widget.ScrollingImagePanel;
     /**
      * This program decodes an image file of any JAI supported
      * formats, such as GIF, JPEG, TIFF, BMP, PNM, PNG, into a
      * RenderedImage, scales the image by 2X with bilinear
      * interpolation, and then displays the result of the scale
      * operation.
      */
     public class JAISampleProgramScale{         /** The main method. */
         public static void main(String[] args) {
             /* Validate input. */
             if (args.length != 1) {
                 System.out.println("Usage: java JAISampleProgram " +
                                    "input_image_filename");
                 System.exit(-1);
             }             /*
              * Create an input stream from the specified file name
              * to be used with the file decoding operator.
              */
             FileSeekableStream stream = null;
             try {
                 stream = new FileSeekableStream(args[0]);
             } catch (IOException e) {
                 e.printStackTrace();
                 System.exit(0);
             }             /* Create an operator to decode the image file. */
             RenderedOp image = JAI.create("stream", stream);
             /*
              * Create a standard bilinear interpolation object to be
              * used with the "scale" operator.
              */
             Interpolation interp = Interpolation.getInstance(
                                        Interpolation.INTERP_BILINEAR);
     int value = 45;
     float angle = (float)(value * (Math.PI/180.0F));     // Create a ParameterBlock and specify the source and
     // parameters     ParameterBlock pb = new ParameterBlock();
          pb.addSource(image);                   // The source image
          pb.add(1.2F);                        // The xScale
          pb.add(1.2F);                        // 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
   RenderedOp  im = JAI.create("scale", pb, null);
//-----------------------------------add the other operator sample code here-------------------------           
             /* Get the width and height of image2. */
             int width = im.getWidth();
             int height = im.getHeight();             /* Attach image2 to a scrolling panel to be displayed. */
             ScrollingImagePanel panel = new ScrollingImagePanel(im, width, height);             /* Create a frame to contain the panel. */
             Frame window = new Frame("JAI Sample Program");
             window.add(panel);
             window.pack();
             window.show();
         }
     }