我正面临一些问题。当我旋转图像时,图像会在角落处被切割。我正在使用以下代码来旋转图像。它正在旋转,但在所有角落都被剪掉了。
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;
}
我需要一些不会让角落被切割的东西。请帮忙。
答案 0 :(得分:0)
正如您自己发现的那样,result
图片对于旋转的实例来说太小了。你必须做一些数学来找到合适的大小。如果你太懒(=太聪明)自己做数学,创建一个匹配原始图像的Rectangle2D
,为你的旋转创建一个AffineTransform
,从你的矩形创建一个变换的形状,并使用它形状的边界框。 (您也可以将相同的转换应用于Graphics
。)