【问题标题】:How to rotate a BufferedImage in Java? [duplicate]如何在 Java 中旋转 BufferedImage? [复制]
【发布时间】:2026-02-18 12:40:02
【问题描述】:

可能重复:
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; 

【问题讨论】:

标签: java image rotation bufferedimage affinetransform


【解决方案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);
}

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

【讨论】: