2016-06-03 6 views
2

ImageView의 도움으로 표시되는 이미지에 효과 및 색상 조정을 추가했습니다.javafx에서 ImageView의 변경 사항을 저장하는 방법은 무엇입니까?

이제 변경 사항을 다른 파일에 저장하려고합니다. 이것을 어떻게 할 수 있습니까?

+0

단지는 파일로'ImageView'을 저장하는 방법 응답 링크 된 질문입니다. 이 질문은'ImageView'에 대한 모든 변경 사항과 함께'ImageView'를 저장하려고하는데,이 질문은 링크 된 답변에 포함되지 않습니다. – DVarga

답변

1

Nodesnapshot 기능이 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); 
     } 

    } 
}); 
+0

이 예제에서 사용한 메서드 setCache() 및 set cacheHint()에 대해 설명해주십시오. –

+0

두 속성 모두 '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

+0

제공하신 솔루션은 작동하지만 문제는 여전히 존재합니다. "png"형식으로 파일을 저장하고 있지만 파일을 열 때 windows는 해당 파일을 볼 수있는 적절한 응용 프로그램을 선택하도록 요청합니다. 도와주세요. 감사합니다 –

관련 문제