Хорошо, моя проблема проста, после выполнения AffineTransform мое изображение не сохраняется должным образом (однако оно нарисовано на JPanel правильно!). Это действительно странно, так что любые намеки действительно оценили ...Вращение по AffineTransform делает сохраненное изображение пустым
Посмотрите на код:
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 сохраняется должным образом -> есть изображение, но его предварительно повернуты.
Файл AFTER ... сохраняется как пустой файл.
Что действительно интересно, ранее упомянутый факт, что это преобразование poperly, показанный на JPanel, что я использую в качестве дисплея (я могу наблюдать эффект желаемой трансформации)
Любая помощь приветствуется ...
Я предполагаю, что это потому, что возврат не является результатом преобразования, а является «фильтрованной» версией (что бы это ни было). Я предполагаю что-то вроде 'new BufferedImage bi2(); op.filter (bi, bi2); 'это то, что вы хотите. Но я не знаю достаточно об этом, чтобы написать полный ответ. –
YESS it worksss !! большое спасибо! Я боролся с этим с нескольких часов! Я очень благодарен! –