List of usage examples for java.awt.image DataBuffer TYPE_INT
int TYPE_INT
To view the source code for java.awt.image DataBuffer TYPE_INT.
Click Source Link
From source file:GrabandFadewithRasters.java
public void init() { URL url;//from w w w . jav a2 s. com try { url = new URL(imageURLString); originalImage = getImage(url); } catch (MalformedURLException me) { showStatus("Malformed URL: " + me.getMessage()); } try { PixelGrabber grabber = new PixelGrabber(originalImage, 0, 0, -1, -1, true); if (grabber.grabPixels()) { width = grabber.getWidth(); height = grabber.getHeight(); originalPixelArray = (int[]) grabber.getPixels(); mis = new MemoryImageSource(width, height, originalPixelArray, 0, width); mis.setAnimated(true); newImage = createImage(mis); } else { System.err.println("Grabbing Failed"); } } catch (InterruptedException ie) { System.err.println("Pixel Grabbing Interrupted"); } DataBufferInt dbi = new DataBufferInt(originalPixelArray, width * height); int bandmasks[] = { 0xff000000, 0x00ff0000, 0x0000ff00, 0x000000ff }; SampleModel sm; sm = new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT, width, height, bandmasks); raster = Raster.createWritableRaster(sm, dbi, null); }
From source file:com.embedler.moon.jtxt2img.mmap.MappedFileBuffer.java
public static DataBuffer create(final int type, final int size, final int numBanks) { switch (type) { case DataBuffer.TYPE_BYTE: return new DataBufferByte(size, numBanks); case DataBuffer.TYPE_USHORT: return new DataBufferUShort(size, numBanks); case DataBuffer.TYPE_INT: return new DataBufferInt(size, numBanks); default:/*from www . j a va 2 s. com*/ throw new JTxt2ImgIoRuntimeException("Unsupported data type: " + type); } }
From source file:com.embedler.moon.jtxt2img.mmap.MappedFileBuffer.java
private MappedFileBuffer(final int type, final int size, final int numBanks) { super(type, size, numBanks); Validate.isTrue(size >= 0, "Integer overflow for size: %d", size); Validate.isTrue(numBanks >= 0, "Number of banks must be positive", numBanks); int componentSize = DataBuffer.getDataTypeSize(type) / 8; try {/*from w w w . ja v a 2 s. c o m*/ tempFile = File.createTempFile(String.format("%s-", getClass().getSimpleName().toLowerCase()), ".tmp"); try (RandomAccessFile raf = new RandomAccessFile(tempFile, "rw"); FileChannel channel = raf.getChannel()) { long length = ((long) size) * componentSize * numBanks; raf.setLength(length); byteBuffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, length); switch (type) { case DataBuffer.TYPE_BYTE: buffer = byteBuffer; break; case DataBuffer.TYPE_USHORT: buffer = byteBuffer.asShortBuffer(); break; case DataBuffer.TYPE_INT: buffer = byteBuffer.asIntBuffer(); break; default: throw new IllegalArgumentException("Unsupported data type: " + type); } } finally { if (!tempFile.delete()) { tempFile.deleteOnExit(); } } } catch (Exception e) { throw new JTxt2ImgIoRuntimeException(e); } }
From source file:omr.jai.TestImage3.java
public static PlanarImage decodeImage (String[] rows) {//from www.j ava 2 s .co m // Create the DataBuffer to hold the pixel samples final int width = rows[0].length(); final int height = rows.length; // Create Raster Raster raster; if (true) { raster = Raster.createPackedRaster (DataBuffer.TYPE_INT, width, height, new int[] {0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000},// bandMasks RGBA null); } else { raster = Raster.createInterleavedRaster (DataBuffer.TYPE_BYTE, width, height, 4,// num of bands null); } // Populate the data buffer DataBuffer dataBuffer = raster.getDataBuffer(); int index = 0; for (String row : rows) { for (int x = 0; x < width; x++) { int argb = toARGB(row.charAt(x)); dataBuffer.setElem(index, argb); index++; } } // Dump // final int size = width * height; // System.out.println("DataBuffer :"); // for (int i = 0; i < size; i++) { // if (i % width == 0) { // System.out.println(); // } // System.out.print(String.format("%8x ", dataBuffer.getElem(i))); // } // System.out.println(); // Create the image BufferedImage bufferedImage = new BufferedImage (width, height, BufferedImage.TYPE_INT_ARGB); bufferedImage.setData(raster); // Dump // System.out.println("BufferedImage :"); // for (int y = 0; y < height; y++) { // System.out.println(); // for (int x = 0; x < width; x++) { // System.out.print(String.format("%8x ", bufferedImage.getRGB(x, y))); // } // } // System.out.println(); return PlanarImage.wrapRenderedImage(bufferedImage); }
From source file:com.bc.ceres.jai.opimage.ReinterpretOpImage.java
private void rescale(Raster sourceRaster, WritableRaster targetRaster, Rectangle targetRectangle) { final int sourceDataType = sourceRaster.getSampleModel().getDataType(); final int targetDataType = targetRaster.getSampleModel().getDataType(); final PixelAccessor sourceAcc = new PixelAccessor(getSourceImage(0)); final PixelAccessor targetAcc = new PixelAccessor(this); final UnpackedImageData sourcePixels; final UnpackedImageData targetPixels; sourcePixels = sourceAcc.getPixels(sourceRaster, targetRectangle, sourceDataType, false); targetPixels = targetAcc.getPixels(targetRaster, targetRectangle, targetDataType, true); switch (sourceDataType) { case DataBuffer.TYPE_BYTE: if (interpretationType == ReinterpretDescriptor.INTERPRET_BYTE_SIGNED) { rescaleSByte(sourcePixels, targetPixels, targetRectangle); } else {// w w w . jav a 2s.co m rescaleByte(sourcePixels, targetPixels, targetRectangle); } break; case DataBuffer.TYPE_USHORT: rescaleUShort(sourcePixels, targetPixels, targetRectangle); break; case DataBuffer.TYPE_SHORT: rescaleShort(sourcePixels, targetPixels, targetRectangle); break; case DataBuffer.TYPE_INT: if (interpretationType == ReinterpretDescriptor.INTERPRET_INT_UNSIGNED) { rescaleUInt(sourcePixels, targetPixels, targetRectangle); } else { rescaleInt(sourcePixels, targetPixels, targetRectangle); } break; case DataBuffer.TYPE_FLOAT: rescaleFloat(sourcePixels, targetPixels, targetRectangle); break; case DataBuffer.TYPE_DOUBLE: rescaleDouble(sourcePixels, targetPixels, targetRectangle); break; } targetAcc.setPixels(targetPixels); }
From source file:GraphicsUtil.java
/** * Creates a new raster that has a <b>copy</b> of the data in * <tt>ras</tt>. This is highly optimized for speed. There is * no provision for changing any aspect of the SampleModel. * However you can specify a new location for the returned raster. * * This method should be used when you need to change the contents * of a Raster that you do not "own" (ie the result of a * <tt>getData</tt> call).//from www .j av a 2 s . c o m * * @param ras The Raster to copy. * * @param minX The x location for the upper left corner of the * returned WritableRaster. * * @param minY The y location for the upper left corner of the * returned WritableRaster. * * @return A writable copy of <tt>ras</tt> */ public static WritableRaster copyRaster(Raster ras, int minX, int minY) { WritableRaster ret = Raster.createWritableRaster(ras.getSampleModel(), new Point(0, 0)); ret = ret.createWritableChild(ras.getMinX() - ras.getSampleModelTranslateX(), ras.getMinY() - ras.getSampleModelTranslateY(), ras.getWidth(), ras.getHeight(), minX, minY, null); // Use System.arraycopy to copy the data between the two... DataBuffer srcDB = ras.getDataBuffer(); DataBuffer retDB = ret.getDataBuffer(); if (srcDB.getDataType() != retDB.getDataType()) { throw new IllegalArgumentException("New DataBuffer doesn't match original"); } int len = srcDB.getSize(); int banks = srcDB.getNumBanks(); int[] offsets = srcDB.getOffsets(); for (int b = 0; b < banks; b++) { switch (srcDB.getDataType()) { case DataBuffer.TYPE_BYTE: { DataBufferByte srcDBT = (DataBufferByte) srcDB; DataBufferByte retDBT = (DataBufferByte) retDB; System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len); break; } case DataBuffer.TYPE_INT: { DataBufferInt srcDBT = (DataBufferInt) srcDB; DataBufferInt retDBT = (DataBufferInt) retDB; System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len); break; } case DataBuffer.TYPE_SHORT: { DataBufferShort srcDBT = (DataBufferShort) srcDB; DataBufferShort retDBT = (DataBufferShort) retDB; System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len); break; } case DataBuffer.TYPE_USHORT: { DataBufferUShort srcDBT = (DataBufferUShort) srcDB; DataBufferUShort retDBT = (DataBufferUShort) retDB; System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len); break; } } } return ret; }
From source file:com.bc.ceres.jai.opimage.ReinterpretOpImage.java
private void reformat(Raster sourceRaster, WritableRaster targetRaster, Rectangle targetRectangle) { final int sourceDataType = sourceRaster.getSampleModel().getDataType(); final int targetDataType = targetRaster.getSampleModel().getDataType(); final PixelAccessor sourceAcc = new PixelAccessor(getSourceImage(0)); final PixelAccessor targetAcc = new PixelAccessor(this); final UnpackedImageData sourcePixels; final UnpackedImageData targetPixels; sourcePixels = sourceAcc.getPixels(sourceRaster, targetRectangle, sourceDataType, false); switch (sourceDataType) { case DataBuffer.TYPE_BYTE: if (interpretationType == ReinterpretDescriptor.INTERPRET_BYTE_SIGNED) { targetPixels = targetAcc.getPixels(targetRaster, targetRectangle, targetDataType, true); reformatSByte(sourcePixels, targetPixels, targetRectangle); break; }//from w ww .ja va 2 s .c om case DataBuffer.TYPE_INT: if (interpretationType == ReinterpretDescriptor.INTERPRET_INT_UNSIGNED) { targetPixels = targetAcc.getPixels(targetRaster, targetRectangle, targetDataType, true); reformatUInt(sourcePixels, targetPixels, targetRectangle); break; } default: targetPixels = sourcePixels; } targetAcc.setPixels(targetPixels); }
From source file:GraphicsUtil.java
/** * Creates a new raster that has a <b>copy</b> of the data in * <tt>ras</tt>. This is highly optimized for speed. There is * no provision for changing any aspect of the SampleModel. * However you can specify a new location for the returned raster. * * This method should be used when you need to change the contents * of a Raster that you do not "own" (ie the result of a * <tt>getData</tt> call)./* w w w. ja v a2 s.co m*/ * * @param ras The Raster to copy. * * @param minX The x location for the upper left corner of the * returned WritableRaster. * * @param minY The y location for the upper left corner of the * returned WritableRaster. * * @return A writable copy of <tt>ras</tt> */ public static WritableRaster copyRaster(Raster ras, int minX, int minY) { WritableRaster ret = Raster.createWritableRaster(ras.getSampleModel(), new Point(0, 0)); ret = ret.createWritableChild(ras.getMinX() - ras.getSampleModelTranslateX(), ras.getMinY() - ras.getSampleModelTranslateY(), ras.getWidth(), ras.getHeight(), minX, minY, null); // Use System.arraycopy to copy the data between the two... DataBuffer srcDB = ras.getDataBuffer(); DataBuffer retDB = ret.getDataBuffer(); if (srcDB.getDataType() != retDB.getDataType()) { throw new IllegalArgumentException("New DataBuffer doesn't match original"); } int len = srcDB.getSize(); int banks = srcDB.getNumBanks(); int[] offsets = srcDB.getOffsets(); for (int b = 0; b < banks; b++) { switch (srcDB.getDataType()) { case DataBuffer.TYPE_BYTE: { DataBufferByte srcDBT = (DataBufferByte) srcDB; DataBufferByte retDBT = (DataBufferByte) retDB; System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len); } case DataBuffer.TYPE_INT: { DataBufferInt srcDBT = (DataBufferInt) srcDB; DataBufferInt retDBT = (DataBufferInt) retDB; System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len); } case DataBuffer.TYPE_SHORT: { DataBufferShort srcDBT = (DataBufferShort) srcDB; DataBufferShort retDBT = (DataBufferShort) retDB; System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len); } case DataBuffer.TYPE_USHORT: { DataBufferUShort srcDBT = (DataBufferUShort) srcDB; DataBufferUShort retDBT = (DataBufferUShort) retDB; System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len); } } } return ret; }
From source file:main.MapKit.java
@Override public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel, RenderingHints hints) {//from w ww.jav a 2s. co m return new CompositeContext() { @Override public void compose(Raster src, Raster dstIn, WritableRaster dstOut) { if (src.getSampleModel().getDataType() != DataBuffer.TYPE_INT || dstIn.getSampleModel().getDataType() != DataBuffer.TYPE_INT || dstOut.getSampleModel().getDataType() != DataBuffer.TYPE_INT) { throw new IllegalStateException("Source and destination must store pixels as INT."); } int width = Math.min(src.getWidth(), dstIn.getWidth()); int height = Math.min(src.getHeight(), dstIn.getHeight()); int[] srcPixel = new int[4]; int[] dstPixel = new int[4]; int[] srcPixels = new int[width]; int[] dstPixels = new int[width]; for (int y = 0; y < height; y++) { src.getDataElements(0, y, width, 1, srcPixels); dstIn.getDataElements(0, y, width, 1, dstPixels); for (int x = 0; x < width; x++) { // pixels are stored as INT_ARGB // our arrays are [R, G, B, A] int pixel = srcPixels[x]; srcPixel[0] = (pixel >> 16) & 0xFF; srcPixel[1] = (pixel >> 8) & 0xFF; srcPixel[2] = (pixel >> 0) & 0xFF; srcPixel[3] = (pixel >> 24) & 0xFF; pixel = dstPixels[x]; dstPixel[0] = (pixel >> 16) & 0xFF; dstPixel[1] = (pixel >> 8) & 0xFF; dstPixel[2] = (pixel >> 0) & 0xFF; dstPixel[3] = (pixel >> 24) & 0xFF; int[] result = new int[] { (srcPixel[0] * dstPixel[0]) >> 8, (srcPixel[1] * dstPixel[1]) >> 8, (srcPixel[2] * dstPixel[2]) >> 8, (srcPixel[3] * dstPixel[3]) >> 8 }; // mixes the result with the opacity dstPixels[x] = (result[3]) << 24 | (result[0]) << 16 | (result[1]) << 8 | (result[2]); } dstOut.setDataElements(0, y, width, 1, dstPixels); } } @Override public void dispose() { // empty } }; }
From source file:com.googlecode.fightinglayoutbugs.helpers.ImageHelper.java
private static List<RectangularRegion> findSubImageInImage(BufferedImage subImage, BufferedImage image, int max) { Map<Integer, List<Point>> rgb2offsets = new HashMap<Integer, List<Point>>(); int sw = subImage.getWidth(); int sh = subImage.getHeight(); for (int x = 0; x < sw; ++x) { for (int y = 0; y < sh; ++y) { int argb = subImage.getRGB(x, y); int a = argb >>> 24; if (a == 255) { Integer rgb = argb & 0xFFFFFF; List<Point> offsets = rgb2offsets.get(rgb); if (offsets == null) { offsets = new ArrayList<Point>(); rgb2offsets.put(rgb, offsets); }/* w ww . j a v a 2 s .c om*/ offsets.add(new Point(x, y)); } } } List<RectangularRegion> result = new ArrayList<RectangularRegion>(); int w = image.getWidth(); int h = image.getHeight(); int[][] p = new int[w][h]; Raster raster = image.getRaster(); if (raster.getTransferType() == DataBuffer.TYPE_BYTE) { byte[] bytes = (byte[]) raster.getDataElements(0, 0, w, h, null); int bytesPerPixel = (bytes.length / (w * h)); ColorModel colorModel = image.getColorModel(); byte[] buf = new byte[bytesPerPixel]; for (int x = 0; x < w; ++x) { for (int y = 0; y < h; ++y) { System.arraycopy(bytes, (x + y * w) * bytesPerPixel, buf, 0, bytesPerPixel); p[x][y] = colorModel.getRGB(buf) & 0xFFFFFF; } } } else if (raster.getTransferType() == DataBuffer.TYPE_INT) { for (int x = 0; x < w; ++x) { p[x] = (int[]) raster.getDataElements(x, 0, 1, h, null); } } else { throw new RuntimeException("findSubImageInImage not implemented for image transfer type " + raster.getTransferType() + " yet."); } for (int x = 0; x < w; ++x) { for (int y = 0; y < h; ++y) { Iterator<Map.Entry<Integer, List<Point>>> i = rgb2offsets.entrySet().iterator(); compareWithSubImageLoop: while (i.hasNext()) { Map.Entry<Integer, List<Point>> mapEntry = i.next(); int expectedRgb = mapEntry.getKey(); for (Point offset : mapEntry.getValue()) { int xx = x + offset.x; int yy = y + offset.y; if (xx >= w || yy >= h || expectedRgb != p[xx][yy]) { break compareWithSubImageLoop; } } if (!i.hasNext()) { result.add(new RectangularRegion(x, y, x + (sw - 1), y + (sh - 1))); if (result.size() == max) { return result; } } } } } return result; }