public BufferedImage toBufferedImage() { final int W = rawImage.width; final int H = rawImage.height; BufferedImage image = new BufferedImage(W, H, BufferedImage.TYPE_INT_RGB); int bytesPerPixels = rawImage.bpp >> 3; //bpp = bits / pixels --> bytes / pixels for (int y = 0, pxIdx = 0; y < H; y++) { for (int x = 0; x < W; x++, pxIdx += bytesPerPixels) { image.setRGB(x, y, rawImage.getARGB(pxIdx)); } } return image; }
/** * Returns the mask value for the red color. * <p/>This value is compatible with org.eclipse.swt.graphics.PaletteData */ public int getRedMask() { return getMask(red_length, red_offset); }
public ScreenImage rotate() { rawImage = rawImage.getRotated(); return this; }
throws TimeoutException, AdbCommandRejectedException, IOException { RawImage imageParams = new RawImage(); byte[] request = formAdbRequest("framebuffer:"); //$NON-NLS-1$ byte[] nudge = { int headerSize = RawImage.getHeaderSize(version); if (imageParams.readHeader(version, buf) == false) { Log.e("Screenshot", "Unsupported protocol: " + version); return null;
public ScreenImage copy() { ScreenImage copy = new ScreenImage(new RawImage()); copy.rawImage.version = this.rawImage.version; copy.rawImage.bpp = this.rawImage.bpp; copy.rawImage.size = this.rawImage.size; copy.rawImage.width = this.rawImage.width; copy.rawImage.height = this.rawImage.height; copy.rawImage.red_offset = this.rawImage.red_offset; copy.rawImage.red_length = this.rawImage.red_length; copy.rawImage.blue_offset = this.rawImage.blue_offset; copy.rawImage.blue_length = this.rawImage.blue_length; copy.rawImage.green_offset = this.rawImage.green_offset; copy.rawImage.green_length = this.rawImage.green_length; copy.rawImage.alpha_offset = this.rawImage.alpha_offset; copy.rawImage.alpha_length = this.rawImage.alpha_length; copy.rawImage.data = new byte[this.rawImage.data.length]; System.arraycopy(this.rawImage.data, 0, copy.rawImage.data, 0, this.rawImage.data.length); return copy; }
throws TimeoutException, AdbCommandRejectedException, IOException { RawImage imageParams = new RawImage(); byte[] request = formAdbRequest("framebuffer:"); //$NON-NLS-1$ byte[] nudge = { int headerSize = RawImage.getHeaderSize(version); if (!imageParams.readHeader(version, buf)) { Log.e("Screenshot", "Unsupported protocol: " + version); return null;
RawImage rotated = new RawImage(); rotated.version = this.version; rotated.bpp = this.bpp;
private static BufferedImage bufferedImageFrom(RawImage rawImage) { BufferedImage image = new BufferedImage(rawImage.width, rawImage.height, TYPE_INT_ARGB); int index = 0; int bytesPerPixel = rawImage.bpp >> 3; for (int y = 0; y < rawImage.height; y++) { for (int x = 0; x < rawImage.width; x++) { image.setRGB(x, y, rawImage.getARGB(index) | 0xff000000); index += bytesPerPixel; } } return image; }
/** * Returns the mask value for the red color. * <p>This value is compatible with org.eclipse.swt.graphics.PaletteData */ public int getRedMask() { return getMask(red_length, red_offset); }
RawImage rotated = new RawImage(); rotated.version = this.version; rotated.bpp = this.bpp;
private void display(final RawImage rawImage) { final RawImage imageToProcess = landscape ? rawImage.getRotated() : rawImage; final BufferedImage image = ImageUtils.convertImage(imageToProcess); size.setSize(image.getWidth(), image.getHeight()); if (listener != null) { SwingUtilities.invokeLater(() -> listener.handleNewImage(size, image, landscape)); } if (qos != null) { SwingUtilities.invokeLater(() -> { try { qos.writeFrame(image, FRAME_DURATION); } catch (IORuntimeException e) { LOGGER.error("IO exception during writing video frame happened", e); } }); } }
private BufferedImage bufferedImageFrom(RawImage rawImage) { BufferedImage image = new BufferedImage(rawImage.width, rawImage.height, TYPE_INT_ARGB); int index = 0; int bytesPerPixel = rawImage.bpp >> 3; for (int y = 0; y < rawImage.height; y++) { for (int x = 0; x < rawImage.width; x++) { image.setRGB(x, y, rawImage.getARGB(index) | 0xff000000); index += bytesPerPixel; } } return image; }
/** * Returns the mask value for the green color. * <p>This value is compatible with org.eclipse.swt.graphics.PaletteData */ public int getGreenMask() { return getMask(green_length, green_offset); }
private static BufferedImage bufferedImageFrom(RawImage rawImage) { BufferedImage image = new BufferedImage(rawImage.width, rawImage.height, TYPE_INT_ARGB); int index = 0; int bytesPerPixel = rawImage.bpp >> 3; for (int y = 0; y < rawImage.height; y++) { for (int x = 0; x < rawImage.width; x++) { image.setRGB(x, y, rawImage.getARGB(index) | 0xff000000); index += bytesPerPixel; } } return image; }
/** * Returns the mask value for the blue color. * <p>This value is compatible with org.eclipse.swt.graphics.PaletteData */ public int getBlueMask() { return getMask(blue_length, blue_offset); }
for (int y = 0; y < rawImage.height; y++) { for (int x = 0; x < rawImage.width; x++, index += indexInc) { int value = rawImage.getARGB(index); bufferedImage.setRGB(x, y, value);
/** * Returns the mask value for the green color. * <p/>This value is compatible with org.eclipse.swt.graphics.PaletteData */ public int getGreenMask() { return getMask(green_length, green_offset); }
/** * Returns the mask value for the blue color. * <p/>This value is compatible with org.eclipse.swt.graphics.PaletteData */ public int getBlueMask() { return getMask(blue_length, blue_offset); }
/** * creates a mask value based on a length and offset. * <p>This value is compatible with org.eclipse.swt.graphics.PaletteData */ private int getMask(int length, int offset) { int res = getMask(length) << offset; // if the bpp is 32 bits then we need to invert it because the buffer is in little endian if (bpp == 32) { return Integer.reverseBytes(res); } return res; }
/** * creates a mask value based on a length and offset. * <p/>This value is compatible with org.eclipse.swt.graphics.PaletteData */ private int getMask(int length, int offset) { int res = getMask(length) << offset; // if the bpp is 32 bits then we need to invert it because the buffer is in little endian if (bpp == 32) { return Integer.reverseBytes(res); } return res; }