如何在Java中旋转BuffereImage?

如何在Java中旋转BuffereImage?,java,image,rotation,bufferedimage,affinetransform,Java,Image,Rotation,Bufferedimage,Affinetransform,可能重复: 我当前使用的方法(如下)会导致BuffereImage随着角度参数的减小而变得越来越失真 public static BufferedImage getRotatedImage(BufferedImage src, int angle) { if (src == null) { System.out.println("getRotatedImage: input image is null"); return null; }

可能重复:

我当前使用的方法(如下)会导致BuffereImage随着角度参数的减小而变得越来越失真

public static BufferedImage getRotatedImage(BufferedImage src, int angle) { 

    if (src == null) {

      System.out.println("getRotatedImage: input image is null");
      return null;

    }

    int transparency = src.getColorModel().getTransparency();
    BufferedImage dest =  gc.createCompatibleImage(
                              src.getWidth(), src.getHeight(), transparency );
    Graphics2D g2d = dest.createGraphics();

    AffineTransform origAT = g2d.getTransform(); 

    AffineTransform rot = new AffineTransform(); 
    rot.rotate(Math.toRadians(angle), src.getWidth()/2, src.getHeight()/2); 
    g2d.transform(rot); 

    g2d.drawImage(src, 0, 0, null);   

    g2d.setTransform(origAT);   
    g2d.dispose();

    return dest; 
随着角度变小,这种情况变得越来越扭曲

public static BufferedImage getRotatedImage(BufferedImage src, int angle) { 

    if (src == null) {

      System.out.println("getRotatedImage: input image is null");
      return null;

    }

    int transparency = src.getColorModel().getTransparency();
    BufferedImage dest =  gc.createCompatibleImage(
                              src.getWidth(), src.getHeight(), transparency );
    Graphics2D g2d = dest.createGraphics();

    AffineTransform origAT = g2d.getTransform(); 

    AffineTransform rot = new AffineTransform(); 
    rot.rotate(Math.toRadians(angle), src.getWidth()/2, src.getHeight()/2); 
    g2d.transform(rot); 

    g2d.drawImage(src, 0, 0, null);   

    g2d.setTransform(origAT);   
    g2d.dispose();

    return dest; 
听起来你在做:

 img = base_img;
 for (i = 0; i < n; i++) {
   img = rotate(img, theta);
 }
img=base\u img;
对于(i=0;i
当你真的想做的时候:

for (i = 0; i < n; i++) {
  img = rotate(base_img, theta * n);
}
(i=0;i{ img=旋转(基准img,θ*n); }
但我可能做出了不真实的假设。

答案不多?在绘制新的旋转版本之前,您可以先看一看图像,还是先清除图像?