我试图编写一个类在x和y方向上缝合雕刻图像。 x方向正在工作,为了减少y方向,我想简单地将图像旋转90°,并在已重新缩放的图像上(仅在x方向)上运行相同的代码,然后将其旋转回初始状态。Rotating BufferedImage改变它的颜色
我找到了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个图像:热图,带有接缝的图像和重新缩放的图像。最后一个图像是一个测试,看看旋转是否工作,它应该显示旋转的图像,但扭曲的颜色...
帮助将不胜感激!
编辑:
你调试,以确保你没有错误的数据写入到最终图像?你确定使用相同的颜色设置(色彩空间等)?另外请发布[mvce](http://stackoverflow.com/help/mcve),这是太多的代码IMO。 – Thomas
它是如何搞乱颜色的?它变得模糊或像所有的绿色都变成了粉红色等颜色?也许你可以展示你的图片。 –
当然,让我编辑它非常快! – ViktorG