如何在Java中旋转BufferedImage?

时间:2012-12-31 05:36:37

标签: java image rotation bufferedimage affinetransform

  

可能重复:
  Rotating BufferedImage instances

我目前正在使用的方法(下面)导致BufferedImage变得越来越扭曲,角度参数越来越小。

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; 

1 个答案:

答案 0 :(得分:1)

  

随着角度较小的参数变得越来越扭曲。

听起来像你在做:

 img = base_img;
 for (i = 0; i < n; i++) {
   img = rotate(img, theta);
 }

当你真的想做的时候:

for (i = 0; i < n; i++) {
  img = rotate(base_img, theta * n);
}

但我可能会做出不真实的假设。