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