private void getImagePixels() { int w = image.getWidth(); int h = image.getHeight(); int type = image.getType(); if ((w != width) || (h != height) || (type != BufferedImage.TYPE_3BYTE_BGR)) { BufferedImage temp = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); Graphics2D g = temp.createGraphics(); g.drawImage(image, 0, 0, null); image = temp; } pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); }
int w = raster.getWidth(); int h = raster.getHeight(); byte[] rgb = new byte[w * h * 3]; float[] Y = raster.getSamples(0, 0, w, h, 0, (float[]) null); float[] Cb = raster.getSamples(0, 0, w, h, 1, (float[]) null); float[] Cr = raster.getSamples(0, 0, w, h, 2, (float[]) null); raster = Raster.createInterleavedRaster(new DataBufferByte(rgb, rgb.length), w, h, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); return new BufferedImage(cm, (WritableRaster) raster, true, null);
public static ByteBuffer createImageBuffer(BufferedImage image) { SampleModel model = image.getSampleModel(); Raster raster = image.getRaster(); DataBuffer inBuffer = raster.getDataBuffer(); ByteBuffer outBuffer = ByteBuffer.allocateDirect(image.getWidth() * image.getHeight() * model.getNumBands()); int x = -raster.getSampleModelTranslateX(); int y = -raster.getSampleModelTranslateY(); int step = model.getWidth() * model.getNumBands(); int channels = model.getNumBands(); byte[] a = ((DataBufferByte) inBuffer).getData(); copy(ByteBuffer.wrap(a, start, a.length - start), step, outBuffer, step, false); short[] a = ((DataBufferShort) inBuffer).getData(); copy(ShortBuffer.wrap(a, start, a.length - start), step, outBuffer.asShortBuffer(), step / 2, true); short[] a = ((DataBufferUShort) inBuffer).getData(); copy(ShortBuffer.wrap(a, start, a.length - start), step, outBuffer.asShortBuffer(), step / 2, false); int[] a = ((DataBufferInt) inBuffer).getData(); copy(IntBuffer.wrap(a, start, a.length - start), step, outBuffer.asIntBuffer(), step / 4);
final WritableRaster raster = image.getRaster(); final DataBufferByte dbf = (DataBufferByte) raster.getDataBuffer(); byte[] data = dbf.getData(); final int stride = data.length / (image.getWidth() * image.getHeight());
/** * Based on answer: https://stackoverflow.com/a/12062505/7030976 * * @param bgr - byte array in bgr format * @return new image */ private BufferedImage buildImage(byte[] bgr) { BufferedImage image = new BufferedImage(resolution.width, resolution.height, BufferedImage.TYPE_3BYTE_BGR); byte[] imageData = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); System.arraycopy(bgr, 0, imageData, 0, bgr.length); return image; }
int width = image.getWidth(); int height = image.getHeight(); int[][] result = new int[height][width]; result[row][col] = image.getRGB(col, row); final byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); final int width = image.getWidth(); final int height = image.getHeight();
BufferedImage imageFromRawData(int width, int height, int scanLine, byte[] data) { DataBuffer buffer = new DataBufferByte(data, data.length); WritableRaster raster = Raster.createInterleavedRaster( buffer, width, height, scanLine, 3, new int[]{0, 1, 2}, null ); ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); return new BufferedImage(cm, raster, cm.isAlphaPremultiplied(), null); }
ImageTypeSpecifier rawType = getRawImageType(imageIndex); checkReadParamBandSettings(param, rawType.getNumBands(), image.getSampleModel().getNumBands()); DataBufferByte buffer = new DataBufferByte(data, data.length / 2, 0); WritableRaster raster = Raster.createPackedRaster(buffer, width, height, resource.depth(), null); if (image.getType() == rawType.getBufferedImageType() && ((IndexColorModel) image.getColorModel()).getMapSize() == 2) { DataBufferByte maskBuffer = new DataBufferByte(data, data.length / 2, data.length / 2); WritableRaster mask = Raster.createPackedRaster(maskBuffer, width, height, resource.depth(), null); Graphics2D graphics = image.createGraphics(); DataBufferByte buffer = new DataBufferByte(data, data.length); WritableRaster raster = Raster.createPackedRaster(buffer, width, height, resource.depth(), null); if (image.getType() == rawType.getBufferedImageType()) { image.getAlphaRaster().setRect(mask); DataBufferByte buffer = new DataBufferByte(data, data.length); image.getAlphaRaster().setRect(mask); WritableRaster mask = Raster.createBandedRaster(new DataBufferByte(solid, solid.length), width, height, width, new int[]{0}, new int[]{0}, null); image.getAlphaRaster().setRect(mask);
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); }
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);
BufferedImage image = readJPX(encoded, options, result); Raster raster = image.getRaster(); switch (raster.getDataBuffer().getDataType()) DataBufferByte byteBuffer = (DataBufferByte) raster.getDataBuffer(); decoded.write(byteBuffer.getData()); return result; DataBufferUShort wordBuffer = (DataBufferUShort) raster.getDataBuffer(); for (short w : wordBuffer.getData()) int[] ar = new int[raster.getNumBands()]; for (int y = 0; y < image.getHeight(); ++y) for (int x = 0; x < image.getWidth(); ++x) raster.getPixel(x, y, ar);
private static MagickImage rgbToMagic(BufferedImage pImage, boolean pAlpha) throws MagickException { MagickImage image = new MagickImage(); BufferedImage buffered = ImageUtil.toBuffered(pImage, pAlpha ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_3BYTE_BGR); // Need to get data of sub raster, not the full data array, this is // just a convenient way Raster raster; if (buffered.getRaster().getParent() != null) { raster = buffered.getData(new Rectangle(buffered.getWidth(), buffered.getHeight())); } else { raster = buffered.getRaster(); } image.constituteImage(buffered.getWidth(), buffered.getHeight(), pAlpha ? "ABGR" : "BGR", ((DataBufferByte) raster.getDataBuffer()).getData()); return image; }
checkReadParamBandSettings(pParam, header.bitplanes / 8, image.getSampleModel().getNumBands()); final byte[] planeData = new byte[8 * planeWidth]; WritableRaster destination = image.getRaster(); if (destinationBands != null || offset.x != 0 || offset.y != 0) { destination = destination.createWritableChild(0, 0, destination.getWidth(), destination.getHeight(), offset.x, offset.y, destinationBands); WritableRaster raster = image.getRaster().createCompatibleWritableRaster(8 * planeWidth, 1); Raster sourceRow = raster.createChild(aoi.x, 0, aoi.width, 1, 0, 0, sourceBands); final byte[] data = ((DataBufferByte) raster.getDataBuffer()).getData(); final int channels = (header.bitplanes + 7) / 8; final int planesPerChannel = 8; for (int srcX = 0; srcX < sourceRow.getWidth(); srcX += sourceXSubsampling) { dataElements = sourceRow.getDataElements(srcX, 0, dataElements); int dstX = srcX / sourceXSubsampling; destination.setDataElements(dstX, dstY, dataElements);
private static Paint create8x8Pattern(final byte[] pPattern) { WritableRaster raster = Raster.createPackedRaster(new DataBufferByte(pPattern, 8), 8, 8, 1, new Point()); BufferedImage img = new BufferedImage(QuickDraw.MONOCHROME, raster, false, null); return new TexturePaint(img, new Rectangle(8, 8)); }
@Test public void testExceptionBlank111() throws Exception { String wms111 = "wms?LAYERS=cite%3ALakes&STYLES=&FORMAT=image%2Fpng&TILED=true&TILESORIGIN=-0.0018%2C0.0006" + "&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&CRS=EPSG%3A4326&BBOX=-0.0018,0.0006,0.0007,0.0031&WIDTH=256&HEIGHT=256" + "&EXCEPTIONS=application/vnd.ogc.se_blank"; BufferedImage blankimage111 = ImageIO.read( getClass().getResourceAsStream("/ServiceException/vnd.ogc.se_blank.png")); BufferedImage image111 = getAsImage(wms111, "image/png"); // compare the general structure assertEquals(image111.getWidth(), blankimage111.getWidth()); assertEquals(image111.getHeight(), blankimage111.getHeight()); assertEquals(image111.getColorModel(), blankimage111.getColorModel()); assertEquals(image111.getSampleModel(), blankimage111.getSampleModel()); // compare the actual data DataBufferByte blankdb111 = (DataBufferByte) blankimage111.getData().getDataBuffer(); DataBufferByte db111 = (DataBufferByte) image111.getData().getDataBuffer(); byte[][] blankbankData111 = blankdb111.getBankData(); byte[][] bankData111 = db111.getBankData(); for (int i = 0; i < bankData111.length; i++) { assertTrue(Arrays.equals(blankbankData111[i], bankData111[i])); } } }
DataBuffer videoBuffer = new DataBufferByte(frame, frame.length); ComponentSampleModel sampleModel = new ComponentSampleModel(DataBuffer.TYPE_BYTE, width, height, 3, width * 3, new int[] {0, 1, 2}); this.grid = Raster.createWritableRaster(sampleModel, videoBuffer, null); ColorModel colorModel = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), null, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); this.image = new BufferedImage(colorModel, this.grid, false, null); } catch (final OutOfMemoryError e) { this.frame = null; try { this.image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_INDEXED); } catch (final OutOfMemoryError ee) { try { this.image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY); } catch (final OutOfMemoryError eee) { this.image = new BufferedImage(1, 1, BufferedImage.TYPE_BYTE_BINARY);
@Override public BufferedImage getImage() { ByteBuffer buffer = getImageBytes(); if (buffer == null) { LOG.error("Images bytes buffer is null!"); return null; } byte[] bytes = new byte[size.width * size.height * 3]; byte[][] data = new byte[][] { bytes }; buffer.get(bytes); DataBufferByte dbuf = new DataBufferByte(data, bytes.length, OFFSET); WritableRaster raster = Raster.createWritableRaster(smodel, dbuf, null); BufferedImage bi = new BufferedImage(cmodel, raster, false, null); bi.flush(); return bi; }
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;
final int[] pByteCounts, final int pCompression) throws IOException { WritableRaster destRaster = destination.getRaster(); ColorModel destCM = destination.getColorModel(); int channels = pSourceCM.createCompatibleSampleModel(1, 1).getNumBands(); ImageTypeSpecifier singleBandRowSpec = ImageTypeSpecifiers.createGrayscale(header.bits, pSourceCM.getTransferType()); 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;
byte[] pixels = ((DataBufferByte) raster.getDataBuffer()).getData(); for (int row = 0; row < height; row++) for (int col = 0; col < width; col++) pixels[row * width + col] = (byte) (startVal + col * bandsTotal / width); BufferedImage legend = model.convertToIntDiscrete(raster, false); Graphics2D gr = legend.createGraphics(); gr.setColor(new Color(0)); gr.drawString("travel time (minutes)", 0, 10);