// Load the Image into a Java FX Image Object // Image img = new Image(new FileInputStream("SomeImageFile.png") ); // Cache Width and Height to 'int's (because getWidth/getHeight return Double) and getPixels needs 'int's // int w = (int)img.getWidth(); int h = (int)img.getHeight(); // Create a new Byte Buffer, but we'll use BGRA (1 byte for each channel) // byte[] buf = new byte[w * h * 4]; /* Since you can get the output in whatever format with a WritablePixelFormat, we'll use an already created one for ease-of-use. */ img.getPixelReader().getPixels(0, 0, w, h, PixelFormat.getByteBgraInstance(), buf, 0, w * 4); /* Second last parameter is byte offset you want to start in your buffer, and the last parameter is stride (in bytes) per line for your buffer. */
public static Mat imageToMat(Image image) { int width = (int) image.getWidth(); int height = (int) image.getHeight(); byte[] buffer = new byte[width * height * 4]; PixelReader reader = image.getPixelReader(); WritablePixelFormat<ByteBuffer> format = WritablePixelFormat.getByteBgraInstance(); reader.getPixels(0, 0, width, height, format, buffer, 0, width * 4); Mat mat = new Mat(height, width, CvType.CV_8UC4); mat.put(0, 0, buffer); return mat; }
public static Image transform(Image in) { int width = (int) in.getWidth(); int height = (int) in.getHeight(); WritableImage out = new WritableImage(width, height); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { Color c = in.getPixelReader().getColor(x, y); if (x <= 10 || x >= image.getWidth() - 10 || y <= 10 || y >= image.getHeight() - 10) c = Color.WHITE; /* else c = c; */ out.getPixelWriter().setColor(x, y, c); } } return out; }
demoChange.setOnAction(e -> { target.getPixelWriter().setPixels(0, 0, width, height, PixelFormat.getIntArgbInstance(), new int[width], 0, 0); engine.negateImage(initialImage.getPixelReader(), target); });
int H = (int) inputImage.getHeight(); WritableImage outputImage = new WritableImage(W, H); PixelReader reader = inputImage.getPixelReader(); PixelWriter writer = outputImage.getPixelWriter(); for (int y = 0; y < H; y++) {
original.getPixelReader(), (int) original.getWidth(), (int) original.getHeight()
int H = (int) inputImage.getHeight(); WritableImage outputImage = new WritableImage(W, H); PixelReader reader = inputImage.getPixelReader(); PixelWriter writer = outputImage.getPixelWriter(); for (int y = 0; y < H; y++) {