Node_Slider_Imageiew1
This example has been modified after this original example Listing 20-8 ColorAdjustTest.java, LearnJavaFx 8, by Kishori Mohan
  • imageview
  • Node as a function
  • Slider to adjust image properties
  • java.lang.Object
    • javafx.scene.Node
      • javafx.scene.Parent
        • javafx.scene.layout.Region
          • javafx.scene.control.Control
            • javafx.scene.control.Slider
Image source:

Code:

package javafxtemplate1;
//Recursion_BindContent_ListView1
//textProperty().addListener Listview Label
import java.net.URL;
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.effect.ColorAdjust;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.stage.Stage;


/**
*
* @author Manas9
*/
public class JavaFXTemplate1 extends Application {
//ImageView imageView = new ImageView();
//Button clearBtn = new Button("Clear Image");
//Node imagenode;
Label label1 =new Label("L1");
Scene scene;
@Override
public void start(Stage primaryStage) throws Exception {
//
ColorAdjust dyadjust = new ColorAdjust();

Node imagenode = getImageNode();
imagenode.setEffect(dyadjust);
//ImageView selectedImage = new ImageView();
//String path = "banner2B.jpg";
//URL url = getClass().getClassLoader().getResource(path);
//Image image1 = new Image(JavaFXTemplate1.class.getResourceAsStream(path));
//selectedImage.setImage(image1);
//node= selectedImage;
GridPane controller = loadSlider(dyadjust);
BorderPane root = new BorderPane ();
root.setTop(label1);
root.setCenter(imagenode);
root.setBottom(controller);
root.setStyle("-fx-padding: 10;" +
"-fx-border-style: solid inside;" +
"-fx-border-width: 2;" +
"-fx-border-insets: 5;" +
"-fx-border-radius: 5;" +
"-fx-border-color: green;");

Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("Slider :: adjust Image Color ");
primaryStage.show();
}

private Node getImageNode() {
Node gnode = null;
ImageView selectedImage = new ImageView();
String path = "banner2B.jpg";
//loading image
Image image1 = new Image(JavaFXTemplate1.class.getResourceAsStream(path));
selectedImage.setImage(image1);
if (image1!= null) {
gnode = selectedImage;
label1.setText("load image " + path);
} else {
label1.setText("did not load image " + path);
// load a dummy rectangle
gnode = new StackPane(new Rectangle(300, 250, Color.LIGHTGRAY),
new Text("adjust rectangle color properties"));
}
return gnode;
}

private GridPane loadSlider(ColorAdjust dyadjust) {
Slider hueSlider = new Slider(-1.0, 1.0, 0.0);
dyadjust.hueProperty().bind(hueSlider.valueProperty());
Slider saturationSlider = new Slider(-1.0, 1.0, 0.0);
dyadjust.saturationProperty().bind(saturationSlider.valueProperty());
Slider brightnessSlider = new Slider(-1.0, 1.0, 0.0);
dyadjust.brightnessProperty().bind(brightnessSlider.valueProperty());
Slider contrastSlider = new Slider(-1.0, 1.0, 0.0);
dyadjust.contrastProperty().bind(contrastSlider.valueProperty());

Slider[] sliders = new Slider[] {hueSlider, saturationSlider,
brightnessSlider, contrastSlider};
for (Slider s : sliders) {
s.setPrefWidth(450);
s.setMajorTickUnit(0.10);
s.setShowTickMarks(true);
s.setShowTickLabels(true);
}

GridPane gridpane = new GridPane();
gridpane.setHgap(10);
gridpane.setVgap(10);
gridpane.addRow(0, new Label("Hue:"), hueSlider);
gridpane.addRow(1, new Label("Saturation:"), saturationSlider);
gridpane.addRow(2, new Label("Brightness:"), brightnessSlider);
gridpane.addRow(3, new Label("Contrast:"), contrastSlider);

return gridpane;
}
//


public static void main(String[] args) {
launch(args);
}
//

}

 
Runtime displays:
  • Loading image
  • Changing Hues:

  • Changing saturation:

    Black -white
  • Changing Brightness:


    changing into transparent image

  • Changing Contrast : grayscale to