ImageView
의 도움으로 표시되는 이미지에 효과 및 색상 조정을 추가했습니다.javafx에서 ImageView의 변경 사항을 저장하는 방법은 무엇입니까?
이제 변경 사항을 다른 파일에 저장하려고합니다. 이것을 어떻게 할 수 있습니까?
ImageView
의 도움으로 표시되는 이미지에 효과 및 색상 조정을 추가했습니다.javafx에서 ImageView의 변경 사항을 저장하는 방법은 무엇입니까?
이제 변경 사항을 다른 파일에 저장하려고합니다. 이것을 어떻게 할 수 있습니까?
Node
의 snapshot
기능이 fromFXImage
메서드와 일치하여 SwingFXUtils
이어야합니다.
준비가되면이 노드의 스냅 샷을 찍은 다음 렌더링 된 이미지를 반환합니다. CSS 및 레이아웃 처리는 노드에 대해 수행되고 노드를 렌더링하기 전에 의 자식 노드에 대해 수행됩니다. 전체 대상 이미지 이 SnapshotParameters에 지정된 채우기 페인트로 지워집니다.
예 :
ImageView imageViewAdjusted = new ImageView(new Image(getClass().getResource("thinking-man.jpg").toExternalForm(), 250, 250, true, true));
ColorAdjust colorAdjust = new ColorAdjust();
colorAdjust.setContrast(0.9);
imageViewAdjusted.setEffect(colorAdjust);
imageViewAdjusted.setCache(true);
imageViewAdjusted.setCacheHint(CacheHint.SPEED);
Button btnSave = new Button("Save to File");
btnSave.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
File outputFile = new File("D:/formattedPicture.png");
BufferedImage bImage = SwingFXUtils.fromFXImage(imageViewAdjusted.snapshot(null, null), null);
try {
ImageIO.write(bImage, "png", outputFile);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
이 예제에서 사용한 메서드 setCache() 및 set cacheHint()에 대해 설명해주십시오. –
두 속성 모두 'Node' 클래스에서 가져옵니다. [setCache] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#setCache-boolean-), [cacheHintProperty ] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#cacheHintProperty--). 기본적으로 이것은이 'Node'가 비트 맵으로 캐싱되어야한다는 것을 나타내며 캐싱의 이유는이 'Node'에서 애니메이션 속도를 최적화하는 것입니다. 링크의 내용을 읽으면 전체 시스템에 대해 스스로 알릴 수 있습니다. – DVarga
제공하신 솔루션은 작동하지만 문제는 여전히 존재합니다. "png"형식으로 파일을 저장하고 있지만 파일을 열 때 windows는 해당 파일을 볼 수있는 적절한 응용 프로그램을 선택하도록 요청합니다. 도와주세요. 감사합니다 –
단지는 파일로'ImageView'을 저장하는 방법 응답 링크 된 질문입니다. 이 질문은'ImageView'에 대한 모든 변경 사항과 함께'ImageView'를 저장하려고하는데,이 질문은 링크 된 답변에 포함되지 않습니다. – DVarga