3

ColorAjust クラスを使用して、彩度の明るさ、コントラスト、色相などの画像を変更できるクラスを作成するだけです。

しかし、これらの変更を行った後にその画像を保存する方法がわかりません。

コードは次のとおりです。

final Stage imageProcessStage = new Stage();
        imageProcessStage.initModality(Modality.APPLICATION_MODAL);
        imageImageProcess = new Image(ImagePathImageProcess);
        imageViewImageProcess = ImageViewBuilder.create().image(imageImageProcess).build();
        ColorAdjust colorAdjust = ColorAdjustBuilder.create().build();
        imageViewImageProcess.setEffect(colorAdjust);
        // 
        Label saturationLabel = LabelBuilder.create().text("Saturation").build();
        GridPane.setConstraints(saturationLabel, 0, 0);
        Slider saturationSlider = SliderBuilder.create().value(50).build();
        colorAdjust.saturationProperty().bind(saturationSlider.valueProperty().divide(50).subtract(1));
        GridPane.setConstraints(saturationSlider, 1, 0);
        GridPane.setHgrow(saturationSlider, Priority.ALWAYS);
        Label saturationValueLabel = LabelBuilder.create().minWidth(75).maxWidth(75).build();
        saturationValueLabel.textProperty().bind(colorAdjust.saturationProperty().multiply(100).asString("%.2f%%"));
        GridPane.setConstraints(saturationValueLabel, 2, 0);
        // 
        Label hueLabel = LabelBuilder.create().text("Hue").build();
        GridPane.setConstraints(hueLabel, 0, 1);
        Slider hueSlider = SliderBuilder.create().value(50).build();
        colorAdjust.hueProperty().bind(hueSlider.valueProperty().divide(50).subtract(1));
        GridPane.setConstraints(hueSlider, 1, 1);
        GridPane.setHgrow(hueSlider, Priority.ALWAYS);
        Label hueValueLabel = LabelBuilder.create().minWidth(75).maxWidth(75).build();
        hueValueLabel.textProperty().bind(colorAdjust.hueProperty().multiply(100).asString("%.2f%%"));
        GridPane.setConstraints(hueValueLabel, 2, 1);
        // 
        Label brightnessLabel = LabelBuilder.create().text("Brightness").build();
        GridPane.setConstraints(brightnessLabel, 0, 2);
        Slider brightnessSlider = SliderBuilder.create().value(50).build();
        colorAdjust.brightnessProperty().bind(brightnessSlider.valueProperty().divide(50).subtract(1));
        GridPane.setConstraints(brightnessSlider, 1, 2);
        GridPane.setHgrow(brightnessSlider, Priority.ALWAYS);
        Label brightnessValueLabel = LabelBuilder.create().minWidth(75).maxWidth(75).build();
        brightnessValueLabel.textProperty().bind(colorAdjust.brightnessProperty().multiply(100).asString("%.2f%%"));
        GridPane.setConstraints(brightnessValueLabel, 2, 2);
        // 
        Label contrastLabel = LabelBuilder.create().text("Contrast").build();
        GridPane.setConstraints(contrastLabel, 0, 3);
        Slider contrastSlider = SliderBuilder.create().value(50).build();
        colorAdjust.contrastProperty().bind(contrastSlider.valueProperty().divide(50).subtract(1));
        GridPane.setConstraints(contrastSlider, 1, 3);
        GridPane.setHgrow(contrastSlider, Priority.ALWAYS);
        Label contrastValueLabel = LabelBuilder.create().minWidth(75).maxWidth(75).build();
        contrastValueLabel.textProperty().bind(colorAdjust.contrastProperty().multiply(100).asString("%.2f%%"));
        GridPane.setConstraints(contrastValueLabel, 2, 3);

        //Validate Button
        Button btnValider = new Button("Valider");
        btnValider.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent event) {   

              // SAVE IMAGE HERE

            }
        });
4

2 に答える 2

2

コードの汎用で単純なバージョン:

private void saveImage(
    Image i, 
    String extension, 
    String pathname) 
throws IOException {

ImageIO.write(
    SwingFXUtils.fromFXImage(
        image, 
        null), 
    extension, 
    new File(
        pathname));
}
于 2013-10-19T16:49:35.060 に答える
2

JavaFX 2.2にアップグレードし、ボタン イベント ハンドラで次のコードを使用します。

ImageIO.write(
  SwingFXUtils.fromFXImage(
   imageViewImageProcess.snapshot(null, null), null
  ),
  "png",
  new File("valider.png")
);

2.2 は現在、GA 製品ではなく開発者プレビューであるため、新しい 2.2 メソッドが完全に QA されるまで、いくつかの問題やバグが発生する可能性があることに注意してください。

完全な実行可能な例を次に示します: https://gist.github.com/2870355

于 2012-06-04T19:14:33.810 に答える