src/org/nutz/img/Images.java
public static BufferedImage clipScale(BufferedImage im, int w, int h) {
        // 获得尺寸
        int oW = im.getWidth();
        int oH = im.getHeight();
        float oR = (float) oW / (float) oH;
        float nR = (float) w / (float) h;

        int nW, nH, x, y;
        /*
         * 裁减
         */
        // 原图太宽，计算当原图与画布同高时，原图的等比宽度
        if (oR > nR) {
            nW = (h * oW) / oH;
            nH = h;
            x = (w - nW) / 2;
            y = 0;
        }
        // 原图太长
        else if (oR < nR) {
            nW = w;
            nH = (w * oH) / oW;
            x = 0;
            y = (h - nH) / 2;
        }
        // 比例相同
        else {
            nW = w;
            nH = h;
            x = 0;
            y = 0;
        }
        // 创建图像
        BufferedImage re = new BufferedImage(w, h, ColorSpace.TYPE_RGB);
        re.createGraphics().drawImage(im, x, y, nW, nH, Color.black, null);
        // 返回
        return re;
    }
public static BufferedImage clipScale(BufferedImage im, int w, int h) {
        // 获得尺寸
        int oW = im.getWidth();
        int oH = im.getHeight();
        float oR = (float) oW / (float) oH;
        float nR = (float) w / (float) h;

        int nW, nH, x, y;
        /*
         * 裁减
         */
        // 原图太宽，计算当原图与画布同高时，原图的等比宽度
        if (oR > nR) {
            nW = (h * oW) / oH;
            nH = h;
            x = (w - nW) / 2;
            y = 0;
        }
        // 原图太长
        else if (oR < nR) {
            nW = w;
            nH = (w * oH) / oW;
            x = 0;
            y = (h - nH) / 2;
        }
        // 比例相同
        else {
            nW = w;
            nH = h;
            x = 0;
            y = 0;
        }
        // 创建图像
        BufferedImage re = new BufferedImage(w, h, ColorSpace.TYPE_RGB);
        re.createGraphics().drawImage(im, x, y, nW, nH, Color.black, null);
        // 返回
        return re;
    }
public static BufferedImage clipScale ( BufferedImage im , int w , int h ) { // 获得尺寸 int oW = im . getWidth ( ) ; int oH = im . getHeight ( ) ; float oR = ( float ) oW / ( float ) oH ; float nR = ( float ) w / ( float ) h ; int nW , nH , x , y ; /*
         * 裁减
         */ // 原图太宽，计算当原图与画布同高时，原图的等比宽度 if ( oR > nR ) { nW = ( h * oW ) / oH ; nH = h ; x = ( w - nW ) / 2 ; y = 0 ; } // 原图太长 else if ( oR < nR ) { nW = w ; nH = ( w * oH ) / oW ; x = 0 ; y = ( h - nH ) / 2 ; } // 比例相同 else { nW = w ; nH = h ; x = 0 ; y = 0 ; } // 创建图像 BufferedImage re = new BufferedImage ( w , h , ColorSpace . TYPE_RGB ) ; re . createGraphics ( ) . drawImage ( im , x , y , nW , nH , Color . black , null ) ; // 返回 return re ; }
自动缩放剪切一个图片，令其符合给定的尺寸
<p>
如果图片太大，则将其缩小，如果图片太小，则将其放大，多余的部分被裁减

@param im
图像对象
@param w
宽度
@param h
高度
@return 被转换后的图像
自动缩放剪切一个图片，令其符合给定的尺寸 <p > 如果图片太大，则将其缩小，如果图片太小，则将其放大，多余的部分被裁减