我試圖編寫一個類在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