public static final ByteBuffer getImageDataFromImage(BufferedImage bufferedImage) { WritableRaster wr; DataBuffer db; BufferedImage bi = new BufferedImage(128, 64, BufferedImage.TYPE_INT_ARGB); Graphics2D g = bi.createGraphics(); g.drawImage(bufferedImage, null, null); bufferedImage = bi; wr = bi.getRaster(); db = wr.getDataBuffer(); DataBufferInt dbi = (DataBufferInt) db; int[] data = dbi.getData(); ByteBuffer byteBuffer = ByteBuffer.allocateDirect(data.length * 4); byteBuffer.order(ByteOrder.LITTLE_ENDIAN); byteBuffer.asIntBuffer().put(data); byteBuffer.flip(); return byteBuffer; }
@MethodHook(value = "<init>", end = true) @Inject public void init(int width, int height, Component canvas) { if (!client.isGpu()) { return; } final int[] pixels = getPixels(); // we need to make our own buffered image for the client with the alpha channel enabled in order to // have alphas for the overlays applied correctly DataBufferInt dataBufferInt = new DataBufferInt(pixels, pixels.length); DirectColorModel directColorModel = new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 32, 0xff0000, 0xff00, 0xff, 0xff000000, true, DataBuffer.TYPE_INT); WritableRaster writableRaster = Raster.createWritableRaster(directColorModel.createCompatibleSampleModel(width, height), dataBufferInt, null); BufferedImage bufferedImage = new BufferedImage(directColorModel, writableRaster, true, new Hashtable()); setImage(bufferedImage); }
DataBufferInt imageBuffer = new DataBufferInt(width * height); WritableRaster raster = Raster.createPackedRaster(imageBuffer, width, height, width, masks, null); BufferedImage view = new BufferedImage(colorModel, raster, false, null); Graphics2D g = view.createGraphics(); g.scale(1f / scale, 1f / scale); g.translate(-offX, -offY); int[] data = imageBuffer.getData(); ByteBuffer byteBuffer = texData.getBuffers()[0]; byteBuffer.asIntBuffer().put(data);
strideElementsAligned = strideBytesAligned / 2; cm = new DirectColorModel(16, 0x7C00, 0x3E0, 0x1F); buffer = new DataBufferUShort(strideElementsAligned * height); raster = Raster.createPackedRaster(buffer, bih.biWidth, height, strideElementsAligned, ((DirectColorModel) cm).getMasks(), null); break; case 32: strideElementsAligned = strideBytesAligned / 4; cm = new DirectColorModel(32, 0xFF0000, 0xFF00, 0xFF); buffer = new DataBufferInt(strideElementsAligned * height); raster = Raster.createPackedRaster(buffer, bih.biWidth, height, strideElementsAligned, ((DirectColorModel) cm).getMasks(), null); break; default: int[] pixels = ((DataBufferInt) buffer).getData(); ok = GDI.GetDIBits(blitDC, outputBitmap, 0, raster.getHeight(), pixels, bi, 0); short[] pixels = ((DataBufferUShort) buffer).getData(); ok = GDI.GetDIBits(blitDC, outputBitmap, 0, raster.getHeight(), pixels, bi, 0); return new BufferedImage(cm, raster, false, null);
double[] CEDD = new double[144]; int width = image.getWidth(); int height = image.getHeight(); BufferedImage image_rgb = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); image_rgb.getGraphics().drawImage(image, 0, 0, null); int[] pixels = ((DataBufferInt) image_rgb.getRaster().getDataBuffer()).getData(); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) {
public static BufferedImage createImage(ByteBuffer data, int width, int height, int type) { BufferedImage image = new BufferedImage(width, height, type); SampleModel model = image.getSampleModel(); Raster raster = image.getRaster(); DataBuffer outBuffer = raster.getDataBuffer(); int x = -raster.getSampleModelTranslateX(); int y = -raster.getSampleModelTranslateY(); int step = model.getWidth() * model.getNumBands(); int channels = model.getNumBands(); step = singleModel.getScanlineStride(); channels = 1; byte[] a = ((DataBufferByte) outBuffer).getData(); copy(data, step, ByteBuffer.wrap(a, start, a.length - start), step, false); short[] a = ((DataBufferShort) outBuffer).getData(); copy(data.asShortBuffer(), step / 2, ShortBuffer.wrap(a, start, a.length - start), step, true); short[] a = ((DataBufferUShort) outBuffer).getData(); copy(data.asShortBuffer(), step / 2, ShortBuffer.wrap(a, start, a.length - start), step, false); int[] a = ((DataBufferInt) outBuffer).getData(); copy(data.asIntBuffer(), step / 4, IntBuffer.wrap(a, start, a.length - start), step);
private static void initImg(BufferedImage img, int pf, int flags) throws Exception { WritableRaster wr = img.getRaster(); int imgType = img.getType(); if(imgType == BufferedImage.TYPE_INT_RGB || imgType == BufferedImage.TYPE_INT_BGR || imgType == BufferedImage.TYPE_INT_ARGB || imgType == BufferedImage.TYPE_INT_ARGB_PRE) { SinglePixelPackedSampleModel sm = (SinglePixelPackedSampleModel)img.getSampleModel(); int pitch = sm.getScanlineStride(); DataBufferInt db = (DataBufferInt)wr.getDataBuffer(); int[] buf = db.getData(); initIntBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, flags); } else { ComponentSampleModel sm = (ComponentSampleModel)img.getSampleModel(); int pitch = sm.getScanlineStride(); DataBufferByte db = (DataBufferByte)wr.getDataBuffer(); byte[] buf = db.getData(); initBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, flags); } }
protected static Mat makeMat(BufferedImage bImg) { if (bImg.getType() == BufferedImage.TYPE_INT_RGB) { log.trace("makeMat: INT_RGB (%dx%d)", bImg.getWidth(), bImg.getHeight()); int[] data = ((DataBufferInt) bImg.getRaster().getDataBuffer()).getData(); ByteBuffer byteBuffer = ByteBuffer.allocate(data.length * 4); IntBuffer intBuffer = byteBuffer.asIntBuffer(); } else if (bImg.getType() == BufferedImage.TYPE_3BYTE_BGR) { log.trace("makeMat: 3BYTE_BGR (%dx%d)", bImg.getWidth(), bImg.getHeight()); byte[] data = ((DataBufferByte) bImg.getRaster().getDataBuffer()).getData(); aMat = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC3); aMat.put(0, 0, data); } else if (bImg.getType() == BufferedImage.TYPE_4BYTE_ABGR) { log.trace("makeMat: TYPE_4BYTE_ABGR (%dx%d)", bImg.getWidth(), bImg.getHeight()); byte[] data = ((DataBufferByte) bImg.getRaster().getDataBuffer()).getData(); aMat = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC4); aMat.put(0, 0, data); } else if (bImg.getType() == BufferedImage.TYPE_BYTE_GRAY) { log.trace("makeMat: BYTE_GRAY (%dx%d)", bImg.getWidth(), bImg.getHeight()); byte[] data = ((DataBufferByte) bImg.getRaster().getDataBuffer()).getData(); aMat = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC1); aMat.put(0, 0, data);
@Override public void paint(BufferedImage image, Graphics2D graphics) { DataBuffer dataBuf = image.getRaster().getDataBuffer(); int imageWidth = image.getWidth(); int imageHeight = image.getHeight(); int[] imageBuffer = dataBuffer.getData(); for (int srcLine = 0, dstLine = y; srcLine < height && dstLine < imageHeight; srcLine++, dstLine++) { try {
int groupWidth = groupImage.getWidth(); int groupHeight = groupImage.getHeight(); int backdropWidth = backdrop.getWidth(); int backdropHeight = backdrop.getHeight(); int groupType = groupImage.getType(); int groupAlphaType = groupAlphaImage.getType(); int backdropType = backdrop.getType(); DataBuffer groupDataBuffer = groupImage.getRaster().getDataBuffer(); DataBuffer groupAlphaDataBuffer = groupAlphaImage.getRaster().getDataBuffer(); DataBuffer backdropDataBuffer = backdrop.getRaster().getDataBuffer(); int[] groupData = ((DataBufferInt)groupDataBuffer).getData(); int[] groupAlphaData = ((DataBufferInt)groupAlphaDataBuffer).getData(); int[] backdropData = ((DataBufferInt)backdropDataBuffer).getData(); boolean backdropHasAlpha = backdropType == BufferedImage.TYPE_INT_ARGB;
public BufferedImage convertToIntDiscrete(Raster raster) { if (!isCompatibleRaster(raster)) throw new IllegalArgumentException( "This raster is not compatible with this PaletteColorModel."); ColorModel cm = new DirectColorModel(getColorSpace(), 24, 0xff0000, 0x00ff00, 0x0000ff, 0, false, DataBuffer.TYPE_INT); int w = raster.getWidth(); int h = raster.getHeight(); WritableRaster discreteRaster = cm.createCompatibleWritableRaster(w, h); int[] discretData = ((DataBufferInt) discreteRaster.getDataBuffer()).getData(); DataBuffer data = raster.getDataBuffer(); if (data instanceof DataBufferByte) { byte[] pixels = ((DataBufferByte) data).getData(); for (int i = 0; i < pixels.length; i++) discretData[i] = getRGB(pixels[i]); } else { short[] pixels = ((DataBufferUShort) data).getData(); for (int i = 0; i < pixels.length; i++) discretData[i] = getRGB(pixels[i]); } return new BufferedImage(cm, discreteRaster, false, null); }
bwidth = img.getWidth(); bheight = img.getHeight(); if (curType == 1) { hsX = 0; continue; } else { if (img.getType() != 2) { continue; } else { singleCursor = BufferUtils.createIntBuffer(img.getWidth() * img.getHeight()); DataBufferInt dataIntBuf = (DataBufferInt) img.getData().getDataBuffer(); singleCursor = IntBuffer.wrap(dataIntBuf.getData()); cursors.add(singleCursor);
@Override public void rgbFrame(boolean preroll, int width, int height, IntBuffer rgb) { LOG.trace("New RGB frame"); if (t1 == -1 || t2 == -1) { t1 = System.currentTimeMillis(); t2 = System.currentTimeMillis(); } BufferedImage tmp = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); tmp.setAccelerationPriority(0); rgb.get(((DataBufferInt) tmp.getRaster().getDataBuffer()).getData(), 0, width * height); tmp.flush(); image = tmp; if (starting.compareAndSet(true, false)) { synchronized (this) { this.notifyAll(); } LOG.debug("GStreamer device ready"); } t1 = t2; t2 = System.currentTimeMillis(); fps = (4 * fps + 1000 / (t2 - t1 + 1)) / 5; }
this.width = image.getWidth(); this.height = image.getHeight(); DataBuffer buffer = image.getRaster().getDataBuffer(); if (buffer instanceof DataBufferByte) { this.buffer = ByteBuffer.wrap(((DataBufferByte)buffer).getData()); this.type = GL2.GL_UNSIGNED_BYTE; } else if (buffer instanceof DataBufferDouble) { this.type = GL2.GL_FLOAT; } else if (buffer instanceof DataBufferInt) { this.buffer = IntBuffer.wrap(((DataBufferInt)buffer).getData()); this.type = GL2.GL_INT; } else if (buffer instanceof DataBufferShort) { this.buffer = ShortBuffer.wrap(((DataBufferShort)buffer).getData()); this.type = GL2.GL_SHORT; } else if (buffer instanceof DataBufferUShort) { this.buffer = ShortBuffer.wrap(((DataBufferUShort)buffer).getData()); this.type = GL2.GL_UNSIGNED_SHORT; } else {
public ZeroRecter_INT_PACK(WritableRaster wr) { super(wr); SinglePixelPackedSampleModel sppsm; sppsm = (SinglePixelPackedSampleModel)wr.getSampleModel(); scanStride = sppsm.getScanlineStride(); DataBufferInt db = (DataBufferInt)wr.getDataBuffer(); x0 = wr.getMinY(); y0 = wr.getMinX(); base = (db.getOffset() + sppsm.getOffset(x0-wr.getSampleModelTranslateX(), y0-wr.getSampleModelTranslateY())); pixels = db.getBankData()[0]; if (wr.getWidth() > 10) zeros = new int[wr.getWidth()]; else zeros = null; }
case BYTE_PIXEL: { image = new BufferedImage(bm.getWidth(), bm.getHeight(), TYPE_BYTE_INDEXED, (IndexColorModel) bm.getChunkyColorModel()); WritableRaster ras = image.getRaster(); byte[] pixels = ((DataBufferByte) ras.getDataBuffer()).getData(); arraycopy(bm.getBytePixels(), 0, pixels, 0, bm.getBytePixels().length); break; WritableRaster ras = createPackedRaster(TYPE_INT, bm.getWidth(), bm.getHeight(), 3, 8, new Point()); image = new BufferedImage(bm.getChunkyColorModel(), ras, false, properties); int[] pixels = ((DataBufferInt) ras.getDataBuffer()).getData(); arraycopy(bm.getIntPixels(), 0, pixels, 0, bm.getIntPixels().length); break;
colorModel = new ComponentColorModel(cs, new int[] { bpp, bpp, bpp }, false, false, Transparency.OPAQUE, dataType); raster = Raster.createInterleavedRaster(dataType, cols, rows, cols * channels, channels, new int[] { 2, 1, 0 }, null); break; DataBuffer buf = raster.getDataBuffer(); matrix.get(0, 0, ((DataBufferByte) buf).getData()); } else if (buf instanceof DataBufferUShort) { matrix.get(0, 0, ((DataBufferUShort) buf).getData()); } else if (buf instanceof DataBufferShort) { matrix.get(0, 0, ((DataBufferShort) buf).getData()); } else if (buf instanceof DataBufferInt) { matrix.get(0, 0, ((DataBufferInt) buf).getData()); } else if (buf instanceof DataBufferFloat) { matrix.get(0, 0, ((DataBufferFloat) buf).getData()); matrix.get(0, 0, ((DataBufferDouble) buf).getData()); return new BufferedImage(colorModel, raster, false, null);
final int[] pByteCounts, final int pCompression) throws IOException { WritableRaster destRaster = destination.getRaster(); ColorModel destCM = destination.getColorModel(); WritableRaster rowRaster = singleBandRowSpec.createBufferedImage(header.width, 1).getRaster(); boolean banded = destRaster.getDataBuffer().getNumBanks() > 1; int interleavedBands = banded ? 1 : destRaster.getNumBands(); byte[] row1 = ((DataBufferByte) rowRaster.getDataBuffer()).getData(); read1bitChannel(c, channels, destRaster.getDataBuffer(), interleavedBands, bandOffset, pSourceCM, row1, pSource, pDest, pXSub, pYSub, header.width, header.height, pByteCounts, pCompression == PSD.COMPRESSION_RLE); break; case 8: byte[] row8 = ((DataBufferByte) rowRaster.getDataBuffer()).getData(); read8bitChannel(c, channels, destRaster.getDataBuffer(), interleavedBands, bandOffset, pSourceCM, row8, pSource, pDest, pXSub, pYSub, header.width, header.height, pByteCounts, c * header.height, pCompression == PSD.COMPRESSION_RLE); break; case 16: short[] row16 = ((DataBufferUShort) rowRaster.getDataBuffer()).getData(); read16bitChannel(c, channels, destRaster.getDataBuffer(), interleavedBands, bandOffset, pSourceCM, row16, pSource, pDest, pXSub, pYSub, header.width, header.height, pByteCounts, c * header.height, pCompression == PSD.COMPRESSION_RLE); break; case 32: int[] row32 = ((DataBufferInt) rowRaster.getDataBuffer()).getData(); read32bitChannel(c, channels, destRaster.getDataBuffer(), interleavedBands, bandOffset, pSourceCM, row32, pSource, pDest, pXSub, pYSub, header.width, header.height, pByteCounts, c * header.height, pCompression == PSD.COMPRESSION_RLE); break;
/** * Creates a BufferedImage which shares its pixel data with this memory * image source. * * @return TODO */ public BufferedImage toBufferedImage() { DataBuffer buf = (pixels instanceof byte[]) ?// new DataBufferByte((byte[]) pixels, pixelscan * height, pixeloffset) :// new DataBufferInt((int[]) pixels, pixelscan * height, pixeloffset); SampleModel sm = model.createCompatibleSampleModel(width, height); WritableRaster raster = Raster.createWritableRaster(sm, buf, new Point()); return new BufferedImage(model, raster, false, properties); }
DataBuffer db = new DataBufferByte(dstBytes, dstBytes.length); raster = Raster.createPackedRaster(db, srcRect.width, srcRect.height, 1, null); DataBuffer db = new DataBufferUShort(shortArray, shortArray.length); raster = Raster.createPackedRaster(db, srcRect.width, srcRect.height, srcRect.width, ((DirectColorModel) cm).getMasks(), null); DataBuffer db = new DataBufferInt(pixArray, pixArray.length); raster = Raster.createPackedRaster(db, srcRect.width, srcRect.height, srcRect.width, ((DirectColorModel) cm).getMasks(), null); BufferedImage img = new BufferedImage(cm, raster, cm.isAlphaPremultiplied(), null);