Используя: AffineTransform.getQuadrantRotateInstance(1);
Ваш AffineTransform вращается на положительное число квадрантов по оси. Это испортит операцию преобразования, поскольку она зависит от x и y, когда бы она ни создавала совместимый образ.
int w = r.x + r.width;
int h = r.y + r.height;
if (w <= 0) {
throw new RasterFormatException("Transformed width ("+w+
") is less than or equal to 0.");
}
Я бы порекомендовал сделать это самостоятельно:
public final void rotatePhoto(String jpgFilename) throws IOException {
File file = new File(jpgFilename);
BufferedImage originalImage = ImageIO.read(file);
// You could use Math.PI / 2, depends on your input.
AffineTransform affineTransform = new AffineTransform();
affineTransform.rotate(Math.toRadians(90), originalImage.getWidth() / 2, originalImage.getHeight() / 2);
// Now lets make that transform an operation, and we use it.
AffineTransformOp opRotated = new AffineTransformOp(affineTransform, AffineTransformOp.TYPE_BILINEAR);
BufferedImage newImage = opRotated.filter(originalImage, null);
// Save the image.
File outputfile = new File("rotated.jpg");
ImageIO.write(newImage, "jpg", outputfile);
}
ОБНОВЛЕНИЕ: Кстати, на него уже был дан ответ Как мне написать сервлет, который вращает изображения?