code: public static BufferedImage rotate(BufferedImage image, int degree) {
          int iw = image.getWidth();// 原始图象的宽度
          int ih = image.getHeight();// 原始图象的高度
          int w = 0;
          int h = 0;
          int x = 0;
          int y = 0;
          degree = degree % 360;
          if (degree < 0)
              degree = 360 + degree;// 将角度转换到0-360度之间
          double ang = degree * 0.0174532925;// 将角度转为弧度
  
          /**
           * 确定旋转后的图象的高度和宽度
           */
  
          if (degree == 180 || degree == 0 || degree == 360) {
              w = iw;
              h = ih;
          } else if (degree == 90 || degree == 270) {
              w = ih;
              h = iw;
          } else {
              int d = iw + ih;
              w = (int) (d * Math.abs(Math.cos(ang)));
              h = (int) (d * Math.abs(Math.sin(ang)));
          }
  
          x = (w / 2) - (iw / 2);// 确定原点坐标
          y = (h / 2) - (ih / 2);
          BufferedImage rotatedImage = new BufferedImage(w, h, image.getType());
          Graphics2D gs = rotatedImage.createGraphics();
          gs.fillRect(0, 0, w, h);// 以给定颜色绘制旋转后图片的背景
          AffineTransform at = new AffineTransform();
          at.rotate(ang, w / 2, h / 2);// 旋转图象
          at.translate(x, y);
          AffineTransformOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
          op.filter(image, rotatedImage);
          image = rotatedImage;
          return image;
      }
docs: 对一个图像进行旋转
  
  @param image
  图像
  @param degree
  旋转角度, 90 为顺时针九十度， -90 为逆时针九十度
  @return 旋转后得图像对象