好的,我的问题很简单,在执行 AffineTransform 之后,我的图像没有正确保存(但是它正确地绘制在 JPanel 上!)。这真的很奇怪,所以任何提示都非常感谢......
看一下代码:
public BufferedImage performRotation(BufferedImage bi){
if (angle!=180){
at.translate(0.5*bi.getHeight(), 0.5*bi.getWidth());
if(clockwise){
at.rotate(Math.toRadians(angle));
}else{
at.rotate(Math.toRadians(-angle));
}
at.translate(-0.5*bi.getWidth(), -0.5*bi.getHeight());
}
else if(angle==180){
at.translate(0.5*bi.getWidth(), 0.5*bi.getHeight());
at.rotate(Math.toRadians(angle));
at.translate(-0.5*bi.getWidth(), -0.5*bi.getHeight());
}
AffineTransformOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
BufferedImage bi2 = op.filter(bi, null);
try {
ImageIO.write(bi, "bmp", new File("BEFORE filterORIG.bmp"));
ImageIO.write(bi2, "bmp", new File("AFTER filterNEW.bmp"));
} catch (IOException ex) {
Logger.getLogger(DrawingField.class.getName()).log(Level.SEVERE, null, ex);
}
正确保存 filterORIG 之前的文件 -> 有一个图像,但它已预先旋转。
File AFTER... 保存为空白文件。
真正有趣的是,前面提到的事实是,这种转换在我用作显示器的 JPanel 上被普遍显示(我可以观察到所需转换的效果)
任何帮助表示赞赏...