x 및 y 방향으로 이미지를 꿰매 붙이기 위해 클래스를 코딩하려고합니다. x 방향은 작동 중이고 y 방향을 줄이려면 이미지를 90 ° 회전시킨 다음 이미 재조정 한 이미지 (x 방향에만 해당)에 동일한 코드를 실행 한 다음 다시 초기 상태로 돌리는 것이 좋습니다.회전 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 가지 이미지가 생성됩니다. 마지막 이미지는 회전이 제대로 작동하는지 테스트하는 것으로 회전 된 이미지가 표시되지만 왜곡 된 색상이 표시되어야합니다 ...
도움말에 크게 감사드립니다!
편집 : op.filter(imgIn2, null);
에 null
전달로 인해 발생하는 색상 변환이처럼
당신이 당신이 그 최종 이미지에 잘못된 데이터를 작성하지 않을 수 있도록 디버깅나요 작동? 같은 색 설정 (색 공간 등)을 사용 했습니까? 또한 게시하시기 바랍니다 [mvce] (http://stackoverflow.com/help/mcve), 너무 많은 코드를 IMO입니다. – Thomas
어떻게 색상이 엉망이 되었습니까? 모든 녹색이 분홍색으로 된 것처럼 흐릿하거나 색이 바뀌 었습니까? 어쩌면 당신은 당신의 이미지를 보여 줄 수 있습니다. –
예, 정말로 빨리 수정하겠습니다. – ViktorG