Java BufferedImage Повернуть

Мне нужно повернуть изображение JPG, поэтому я написал эту функцию:

BufferedImage rotate(BufferedImage bufferedImage) {
    AffineTransform tx = new AffineTransform();
    tx.rotate(Math.PI/2.0, bufferedImage.getWidth() / 2, bufferedImage.getHeight() / 2);

    AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
    return op.filter(bufferedImage, null);
}

Я использую ImageIO для чтения и записи изображения из файла:

String [] photos = { "IMG_1998.JPG" , "IMG_1999.JPG" ,"IMG_2001.JPG" ,"IMG_2002.JPG" ,"IMG_2003.JPG"};

for(int i=0; i<photos.length-1; i++) {
     BufferedImage nextImage = rotate(ImageIO.read(new File("d:/gif/" + photos[i])));
     ImageIO.write(nextImage, "JPG", new File("d:/gif/A_" + photos[i]));
}

Однако, когда я просматриваю выходные файлы изображений, все они отображаются как негативные. (Я хотел бы прикрепить изображения здесь) Может кто-то указать, где я делаю неправильно?

Спасибо,

Alex

1 ответ

Как и комментарий @haraldk, передайте полученное изображение в функцию AffineTransformOp.filter вместо использования null. Прочитайте комментарий @haraldk для объяснения.

С уважением.

Другие вопросы по тегам