如何在javafx中保存对ImageView所做的更改?

时间:2016-06-03 07:47:46

标签: java image javafx

我添加了对ImageView

帮助显示的图像的效果和颜色调整

现在我想将这些更改保存到其他文件中。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您需要Node类的snapshot功能与SwingFXUtils的{​​{3}}方法配对。

  

拍摄此节点的快照并返回渲染后的图像   准备好了。 CSS和布局处理将为节点和任何节点完成   它的孩子,在渲染之前。整个目标图像   被清除为SnapshotParameters指定的填充Paint。

示例:

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);
        }

    }
});