private void updateHSLCircleColor(int x, int y) { // transform color to HSL space Color color = huesCircleView.getImage().getPixelReader().getColor(x, y); double max = Math.max(color.getRed(), Math.max(color.getGreen(), color.getBlue())); double min = Math.min(color.getRed(), Math.min(color.getGreen(), color.getBlue())); double hue = 0; if (max != min) { double d = max - min; if (max == color.getRed()) { hue = (color.getGreen() - color.getBlue()) / d + (color.getGreen() < color.getBlue() ? 6 : 0); } else if (max == color.getGreen()) { hue = (color.getBlue() - color.getRed()) / d + 2; } else if (max == color.getBlue()) { hue = (color.getRed() - color.getGreen()) / d + 4; } hue /= 6; } currentHue = map(hue, 0, 1, 0, 255); // refresh the HSL circle refreshHSLCircle(); }
PixelReader reader1 = image1.getPixelReader(); PixelReader reader2 = image2.getPixelReader(); SimpleIntegerProperty region = new SimpleIntegerProperty(-1); region.addListener((observable, oldValue, newValue) -> { if (newValue.intValue() < 0) { System.out.println("region left"); } else { System.out.println("Region " + (newValue.intValue() + 1)); } }); canvas.setOnMouseMoved(event -> { int x = (int) event.getX(); int y = (int) event.getY(); if (x < image1.getWidth() && y < image1.getHeight() && reader1.getColor(x, y).getOpacity() != 0) { region.set(0); } else if (x < image2.getWidth() && y < image2.getHeight() && reader2.getColor(x, y).getOpacity() != 0) { region.set(1); } else { region.set(-1); } });
public class ImageRenderer { public void render(GraphicsContext context, Image image, int sx, int sy, int sw, int sh, int tx, int ty) { PixelReader reader = image.getPixelReader(); PixelWriter writer = context.getPixelWriter(); for (int x = 0; x < sw; x++) { for (int y = 0; y < sh; y++) { Color color = reader.getColor(sx + x, sy + y); if (color.isOpaque()) { writer.setColor(tx + x, ty + y, color); } } } } }
public void start(Stage primaryStage) { Group mainGroup = new Group(); Rectangle r = new Rectangle(0, 0, 200, 200); Stop[] stops = new Stop[] { new Stop(0, new Color(0.0, 0.0, 1.0, 1.0)), new Stop(1, new Color(1.0, 1.0, 1.0, 0.0)) }; LinearGradient lg = new LinearGradient(0, 0, 1, 1, true, CycleMethod.NO_CYCLE, stops); r.setFill(lg); mainGroup.getChildren().add(r); Scene scene = new Scene(mainGroup, 200, 200); scene.setFill(Color.TRANSPARENT); primaryStage.setScene(scene); primaryStage.show(); WritableImage image = scene.snapshot(null); PixelReader pixelReader = image.getPixelReader(); System.out.println("Color: " + pixelReader.getColor((int)image.getWidth()/2, (int)image.getHeight()/2)); }
int y = (int) event.getY(); PixelReader pixelReader = snapshot.getPixelReader(); Color color = pixelReader.getColor(x, y); String text = String.format("Red: %.2f%nGreen: %.2f%nBlue: %.2f", color.getRed(),
/** * copy the given image to a writeable image * * @param image * @return a writable image */ public static WritableImage copyImage(Image image) { int height = (int) image.getHeight(); int width = (int) image.getWidth(); PixelReader pixelReader = image.getPixelReader(); WritableImage writableImage = new WritableImage(width, height); PixelWriter pixelWriter = writableImage.getPixelWriter(); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { Color color = pixelReader.getColor(x, y); pixelWriter.setColor(x, y, color); } } return writableImage; }
if (y >= 0 && y < displayContext.composite.getGridHeight()) if (x >= 0 && x < displayContext.composite.getGridWidth()) { Color color = pixelReader.getColor(x, y); int tx0 = x - gp.x + half; int ty0 = y - gp.y + half;
private void updateHSLCircleColor(int x, int y) { // transform color to HSL space Color color = huesCircleView.getImage().getPixelReader().getColor(x, y); double max = Math.max(color.getRed(), Math.max(color.getGreen(), color.getBlue())); double min = Math.min(color.getRed(), Math.min(color.getGreen(), color.getBlue())); double hue = 0; if (max != min) { double d = max - min; if (max == color.getRed()) { hue = (color.getGreen() - color.getBlue()) / d + (color.getGreen() < color.getBlue() ? 6 : 0); } else if (max == color.getGreen()) { hue = (color.getBlue() - color.getRed()) / d + 2; } else if (max == color.getBlue()) { hue = (color.getRed() - color.getGreen()) / d + 4; } hue /= 6; } currentHue = map(hue, 0, 1, 0, 255); // refresh the HSL circle refreshHSLCircle(); }
while (v < height + padY) { if (h >= padX && h <= width + padX && v >= padY && v <= height + padY) { writer.setColor(h, v, reader.getColor(h - padX, v - padY)); } else { writer.setColor(h, v, Color.TRANSPARENT);
while (v < height + padY) { if (h >= padX && h <= width + padX && v >= padY && v <= height + padY) { writer.setColor(h, v, reader.getColor(h - padX, v - padY)); } else { writer.setColor(h, v, Color.TRANSPARENT);