Download Java jar file Blended.jar
Java classes:
Blend
BlendMode
Blended.java
import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.*; import javafx.scene.effect.BlendMode; import javafx.scene.image.*; import javafx.scene.layout.HBox; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; public class Blended extends Application { @Override public void start(Stage stage) { Image original = new Image( getClass().getResourceAsStream("original.jpg") ); Image stencil = new Image( getClass().getResourceAsStream("stencil.jpg") ); // first invert the stencil so that it is black on white rather than white on black. Rectangle whiteRect = new Rectangle(stencil.getWidth(), stencil.getHeight()); whiteRect.setFill(Color.WHITE); whiteRect.setBlendMode(BlendMode.DIFFERENCE); Group inverted = new Group( new ImageView(stencil), whiteRect ); // overlay the black portions of the inverted mask onto the image. inverted.setBlendMode(BlendMode.MULTIPLY); Group overlaidBlack = new Group( new ImageView(original), inverted ); // create a new mask with a red tint (red on black). Rectangle redRect = new Rectangle(stencil.getWidth(), stencil.getHeight()); redRect.setFill(Color.RED); redRect.setBlendMode(BlendMode.MULTIPLY); Group redStencil = new Group( new ImageView(stencil), redRect ); // overlay the red mask on to the image. redStencil.setBlendMode(BlendMode.ADD); Group overlaidRed = new Group( overlaidBlack, redStencil ); // display the original, composite image and stencil. HBox layout = new HBox(10); layout.getChildren().addAll( new ImageView(original), overlaidRed, new ImageView(stencil) ); layout.setPadding(new Insets(10)); stage.setScene(new Scene(layout)); stage.show(); } public static void main(String[] args) { launch(); } }
Maintained by John Loomis, updated Sun Mar 18 19:14:32 2018