public static BufferedImage scale(BufferedImage im, int w, int h) {
        // 获得尺寸
        int oW = im.getWidth();
        int oH = im.getHeight();

        int nW = w, nH = h;

        /*
         * 缩放
         */
        // 未指定图像高度，根据原图尺寸计算出高度
        if (h == -1) {
            nH = (int) ((float) w / oW * oH);
        }
        // 未指定图像宽度，根据原图尺寸计算出宽度
        else if (w == -1) {
            nW = (int) ((float) h / oH * oW);
        }

        // 创建图像
        BufferedImage re = new BufferedImage(nW, nH, im.getType());
        Graphics2D gc = re.createGraphics();
        gc.drawImage(im, 0, 0, nW, nH, null);
        gc.dispose();
        // 返回
        return re;
    }
public static BufferedImage scale(BufferedImage im, int w, int h) {
        
        int oW = im.getWidth();
        int oH = im.getHeight();

        int nW = w, nH = h;

        
        
        if (h == -1) {
            nH = (int) ((float) w / oW * oH);
        }
        
        else if (w == -1) {
            nW = (int) ((float) h / oH * oW);
        }

        
        BufferedImage re = new BufferedImage(nW, nH, im.getType());
        Graphics2D gc = re.createGraphics();
        gc.drawImage(im, 0, 0, nW, nH, null);
        gc.dispose();
        
        return re;
    }
public static BufferedImage scale ( BufferedImage im , int w , int h ) { // 获得尺寸 int oW = im . getWidth ( ) ; int oH = im . getHeight ( ) ; int nW = w , nH = h ; /*
         * 缩放
         */ // 未指定图像高度，根据原图尺寸计算出高度 if ( h == - 1 ) { nH = ( int ) ( ( float ) w / oW * oH ) ; } // 未指定图像宽度，根据原图尺寸计算出宽度 else if ( w == - 1 ) { nW = ( int ) ( ( float ) h / oH * oW ) ; } // 创建图像 BufferedImage re = new BufferedImage ( nW , nH , im . getType ( ) ) ; Graphics2D gc = re . createGraphics ( ) ; gc . drawImage ( im , 0 , 0 , nW , nH , null ) ; gc . dispose ( ) ; // 返回 return re ; }
自动等比缩放一个图片

@param im
图像对象
@param w
宽度
@param h
高度

@return 被转换后的图像
自动等比缩放一个图片