旋转后,图像在角落处切割

时间:2014-10-03 07:58:07

标签: java image rotation

我正面临一些问题。当我旋转图像时,图像会在角落处被切割。我正在使用以下代码来旋转图像。它正在旋转,但在所有角落都被剪掉了。

public static Image rotate(BufferedImage img, double angle) {  
   int w = img.getWidth();    
   int h = img.getHeight();    
   BufferedImage result = new BufferedImage(w, h, img.getType());  
   Graphics2D g2 = result.createGraphics();  
   g2.setColor(Color.WHITE);
   g2.fillRect(0, 0, w, h);
   g2.rotate(Math.toRadians(angle), w/2, h/2);
   g2.drawRenderedImage(img, null);
   //g2.drawImage(img,null,0,0);  
   return result;
}

我需要一些不会让角落被切割的东西。请帮忙。

1 个答案:

答案 0 :(得分:0)

正如您自己发现的那样,result图片对于旋转的实例来说太小了。你必须做一些数学来找到合适的大小。如果你太懒(=太聪明)自己做数学,创建一个匹配原始图像的Rectangle2D,为你的旋转创建一个AffineTransform,从你的矩形创建一个变换的形状,并使用它形状的边界框。 (您也可以将相同的转换应用于Graphics。)