私は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つのイメージが表示されます。最後の画像は、回転がうまくいっているかどうかを確認するテストです。回転した画像が表示されますが、色は歪んでいます...
ヘルプは大歓迎です!
EDIT:
に動作します、あなたはあなたがその最終的な画像に誤ったデータを書き込むいない作るためにデバッグましたか?同じ色の設定(色空間など)を使用していることを確認しましたか?また、[mvce](http://stackoverflow.com/help/mcve)を投稿してください、あまりにも多くのコードのIMOです。 – Thomas
どのように色が乱れましたか?すべての緑色がピンク色になっているように、ぼやけたり色が変わったりしましたか?たぶんあなたのイメージを表示することができます。 –
確かに、私はそれを本当に素早く編集させてください! – ViktorG