Вращающийся BufferedImage меняет свои цвета
Я пытаюсь закодировать класс, чтобы сшить вырезанные изображения в направлении x и y. Направление x работает, и чтобы уменьшить направление y, я подумал о том, чтобы просто повернуть изображение на 90 ° и запустить тот же код для уже масштабированного изображения (только в направлении x), а затем повернуть его обратно в исходное состояние.
Я нашел что-то сAffineTransform
и попробовал это. Это фактически произвело повернутое изображение, но испортило цвета, и я не знаю почему.
Это весь код:
import java.awt.image.BufferedImage;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.io.File;
import java.io.IOException;
import javafx.scene.paint.Color;
import javax.imageio.ImageIO;
public class example {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
BufferedImage imgIn = ImageIO.read(new File("landscape.jpg"));
BufferedImage imgIn2 = imgIn;
AffineTransform tx = new AffineTransform();
tx.rotate(Math.PI/2, imgIn2.getWidth() / 2, imgIn2.getHeight() / 2);//(radian,arbit_X,arbit_Y)
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
BufferedImage last = op.filter(imgIn2, null);//(sourse,destination)
ImageIO.write(last, "JPEG", new File("distortedColors.jpg"));
}
}
Просто измените имя файла вBufferedImage imgIn = ImageIO.read(new File("landscape.jpg"));
и попробуй это.
После выполнения вы получите 4 изображения: тепловую карту, изображение со швами и измененное изображение. Последнее изображение является тестом, чтобы увидеть, работает ли вращение, и оно должно показывать повернутое изображение, но с искаженными цветами ...
Помощь будет принята с благодарностью!
РЕДАКТИРОВАТЬ: