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 pixelReader = img.getPixelReader(); int width = (int)img.getWidth(); int height = (int)img.getHeight(); byte[] buffer = new byte[width * height * 4]; pixelReader.getPixels( 0, 0, width, height, PixelFormat.getByteBgraInstance(), buffer, 0, width * 4 );
@Override public int[] getPixels(Image img, int x, int y, int w, int h) { int[] pixels = new int[w * h]; PixelReader reader = img.getPixelReader(); PixelFormat.Type type = reader.getPixelFormat().getType(); WritablePixelFormat<IntBuffer> format = null; if(type == PixelFormat.Type.INT_ARGB_PRE) { format = PixelFormat.getIntArgbPreInstance(); } else { format = PixelFormat.getIntArgbInstance(); } reader.getPixels(x, y, w, h, format, pixels, 0, w); return pixels; }
public static Image fastResize(Image image, int width, int height) { if (width <= 0 || height <= 0) { throw new IllegalArgumentException("Dimension must be > 0 (" + width + "/" + height + ")"); } PixelReader reader = image.getPixelReader(); WritableImage writableImage = new WritableImage(width, height); PixelWriter writer = writableImage.getPixelWriter(); double widthFactor = image.getWidth() / width; double heightFactor = image.getHeight() / height; int xToWrite = 0; while (xToWrite < width) { int yToWrite = 0; while (yToWrite < height) { writer.setArgb(xToWrite, yToWrite, reader.getArgb((int) (xToWrite * widthFactor), (int) (yToWrite * heightFactor))); yToWrite++; } xToWrite++; } return writableImage; }
reader.getPixels(x, y, recWidth, recHeight, format, buffer, 0, recWidth); System.out.println("Reader Type: " + reader.getPixelFormat().getType()); System.out.println("Writer Type: " + writer.getPixelFormat().getType());
/** * To pixmap. * * @param aImage the image * @return the rgb pixmap */ protected static RgbPixmap toPixmap( Image aImage ) { int theWidth = (int) aImage.getWidth(); int theHeight = (int) aImage.getHeight(); RgbPixel[][] thePixels = new RgbPixel[theWidth][theHeight]; RgbPixmap thePixmap = new RgbPixmapImpl( thePixels ); PixelReader theReader = aImage.getPixelReader(); for ( int x = 0; x < theWidth; x++ ) { for ( int y = 0; y < theHeight; y++ ) { thePixels[x][y] = new RgbPixelImpl( theReader.getArgb( x, y ) ); } } return thePixmap; }
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 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; }
for (int y = 0; y < H; y++) { for (int x = 0; x < W; x++) { int argb = reader.getArgb(x, y); int a = (argb >> 24) & 0xFF; int r = (argb >> 16) & 0xFF;
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); } } } } }
private void color() { PixelReader reader = src.getPixelReader(); WritablePixelFormat<IntBuffer> format = WritablePixelFormat.getIntArgbInstance(); int[] pixels = new int[width * height]; // Buffer for all pixels reader.getPixels(0, 0, width, height, format, pixels, 0, width); // get all pixels by argb format int alpha = 0xFF << 24; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { int index = x + y * width; int argb = pixels[index]; int red = value * x * y / (width * height); int green = (argb >> 8) & 0xFF; int blue = value * ((width * height) - x * y) / (width * height); int newArgb = alpha | (red << 16) | (green << 8) | blue; pixels[index] = newArgb; } } PixelWriter writer = dest.getPixelWriter(); writer.setPixels(0, 0, width, height, format, pixels, 0, width); // write entire image }
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)); }
public static int[] getRGB(Image image, int x, int y, int width, int height) { int[] rgb = new int[width * height]; PixelReader reader = image.getPixelReader(); reader.getPixels(x, y, width, height, PixelFormat.getIntArgbInstance(), rgb, 0, width); return rgb; }
public static Image crop(Image src, int col, int row) { PixelReader r = src.getPixelReader(); PixelFormat<IntBuffer> pixelFormat = PixelFormat.getIntArgbInstance() ; int[] pixels = new int[Grid.SIZE * Grid.SIZE]; r.getPixels(col * Grid.SIZE, row * Grid.SIZE, Grid.SIZE, Grid.SIZE, pixelFormat, pixels, 0, Grid.SIZE); WritableImage out = new WritableImage(Grid.SIZE, Grid.SIZE); PixelWriter w = out.getPixelWriter(); w.setPixels(0, 0, Grid.SIZE, Grid.SIZE, pixelFormat, pixels, 0, Grid.SIZE); return out ; }
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(),
WritablePixelFormat<IntBuffer> pf = (bimg.isAlphaPremultiplied() ? PixelFormat.getIntArgbPreInstance() : PixelFormat.getIntArgbInstance()); pr.getPixels(0, 0, iw, ih, pf, data, offset, scan); return bimg;
int progWidth = newX.intValue() - oldX.intValue(); int[] pixels = new int[progWidth*height]; source.getPixels(oldX.intValue(), 0, progWidth, height, PixelFormat.getIntArgbInstance(), pixels, 0, progWidth);
/** * 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; }