【发布时间】:2015-12-07 20:59:54
【问题描述】:
当我尝试旋转图像时,背景的一部分似乎变黑(我的图像是透明的)
Background white
Part of background turns black
这是旋转图像的代码:
public BufferedImage rotate(int height, int width, BufferedImage originalImg, int angle) {
BufferedImage rotateImage = null;
try {
rotateImage = new BufferedImage(height, width, BufferedImage.TYPE_INT_RGB);
AffineTransform a90 = AffineTransform.getRotateInstance(Math.toRadians(angle), height / 2, width / 2);
AffineTransformOp op90 = new AffineTransformOp(a90, AffineTransformOp.TYPE_BILINEAR);
op90.filter(originalImg, rotateImage);
}
catch (Exception e) {
System.err.println(e);
}
return rotateImage;
}
【问题讨论】:
-
所有接受宽度和高度的 API 都将宽度参数放在高度参数之前。我不确定你是否故意改变了它们。无论如何,BufferedImage 构造函数需要宽度后跟高度,而 AffineTransform.getRotateInstance 方法需要 X 坐标后跟 Y 坐标。
-
好吧,我的图片都是方形的,所以变化不大,getRotateInstance 需要一个锚点来旋转,所以我发送了图片中间的高度/2 和宽度/2
-
这与我有关:
BufferedImage.TYPE_INT_RGB。不应该是BufferedImage.TYPE_INT_ARGB吗?你有透明度,这意味着你需要 alpha。 -
有效!非常感谢,我没看到
标签: java swing image-rotation affinetransform rgba