Передача нового BufferedImage в метод filter () вместо того, чтобы позволять ему создавать свои собственные работы (не полностью черные).
Кроме того, преобразование не работает должным образом, в конечном итоге изображение смещено в месте назначения. Мне удалось это исправить, вручную применив необходимые переводы, отметив эти работы в обратном порядке, и на целевом изображении ширина = старая высота, а высота = старая ширина.
AffineTransform tx = new AffineTransform();
// last, width = height and height = width :)
tx.translate(originalImage.getHeight() / 2,originalImage.getWidth() / 2);
tx.rotate(Math.PI / 2);
// first - center image at the origin so rotate works OK
tx.translate(-originalImage.getWidth() / 2,-originalImage.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
// new destination image where height = width and width = height.
BufferedImage newImage =new BufferedImage(originalImage.getHeight(), originalImage.getWidth(), originalImage.getType());
op.filter(originalImage, newImage);
Javadoc для filter () утверждает, что он создаст BufferedImage для вас, я все еще не уверен, почему это не работает, здесь должна быть проблема.
If the destination image is null, a BufferedImage is created with the source ColorModel.