当我使用 Graphics2D.rotate()
旋转图像时,显然它会在角落留下一些空白空间。空白的角落变得透明。
我希望我的程序旋转 BufferedImage
并用白色填充剩余的空白角。
我该怎么做?
换句话说,我想旋转图像,同时为整个图像保留白色背景。
这是我的功能:
public BufferedImage rotateImage(BufferedImage image, double degreesAngle) {
int w = image.getWidth();
int h = image.getHeight();
BufferedImage result = new BufferedImage(w, h, image.getType());
Graphics2D g2 = result.createGraphics();
g2.rotate(Math.toRadians(degreesAngle), w/2, h/2);
g2.drawImage(image,null,0,0);
return result;
}
然后我使用此图像将其绘制为透明的 JPanel,稍后我将其添加到 JLayeredPane。
但是,我的图片有透明角,我想用白色填充它们。
最佳答案
你(至少)有两个选择......
你可以...
在绘制旋转图像之前绘制 BufferedImage
的背景...
public BufferedImage rotateImage(BufferedImage image, double degreesAngle) {
int w = image.getWidth();
int h = image.getHeight();
BufferedImage result = new BufferedImage(w, h, image.getType());
Graphics2D g2 = result.createGraphics();
g2.setColor(Color.WHITE);
g2.fillRect(0, 0, w, h);
g2.rotate(Math.toRadians(degreesAngle), w/2, h/2);
g2.drawImage(image,null,0,0);
return result;
}
你可以...
在将图像绘制到面板之前先绘制图像后面的区域...
关于java - BufferedImage 旋转,改变结果背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20256183/