Interpolation.getInstance(interpolation)); RenderedOp result = w.getRenderedOperation(); Raster scaledImageRaster = result.getData(); if (!(scaledImageRaster instanceof WritableRaster)) scaledImageRaster = result.copyData();
private Raster readImageTile(int tileX, int tileY, Point location) { File imageFile = new File(imageDir.getBasePath(), getTileFilename(tileX, tileY)); final RenderedOp renderedOp = FileLoadDescriptor.create(imageFile.getPath(), null, true, null); final Raster data = renderedOp.getData(); return WritableRaster.createRaster(data.getSampleModel(), data.getDataBuffer(), location); }
private static BufferedImage rescaleImageViaPlanarImage( final Interpolation interpolation, final double rescaleX, final double rescaleY, final BufferedImage image) { final PlanarImage planarImage = new TiledImage(image, image.getWidth(), image.getHeight()); final ImageWorker w = new ImageWorker(planarImage); w.scale((float) rescaleX, (float) rescaleY, 0.0f, 0.0f, interpolation); final RenderedOp result = w.getRenderedOperation(); final Raster raster = result.getData(); final WritableRaster scaledImageRaster; if (raster instanceof WritableRaster) { scaledImageRaster = (WritableRaster) raster; } else { scaledImageRaster = raster.createCompatibleWritableRaster(); scaledImageRaster.setDataElements(0, 0, raster); } final ColorModel colorModel = image.getColorModel(); try { final BufferedImage scaledImage = new BufferedImage(colorModel, scaledImageRaster, image.isAlphaPremultiplied(), null); return scaledImage; } catch (final IllegalArgumentException e) { LOGGER.warn("Unable to rescale image", e); return image; } }
/** * Performs the table lookup operation within the specified bounds. */ protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { // ROI bounds calculations Raster tile = sources[0]; Rectangle rect = tile.getBounds(); // ROI calculation if roiAccessor is used if (useRoiAccessor) { // Note that the getExtendedData() method is not called because the input images are padded. // For each image there is a check if the rectangle is contained inside the source image; // if this not happen, the data is taken from the padded image. Raster roi = null; if (srcROIImage.getBounds().contains(rect)) { roi = srcROIImage.getData(rect); } else { roi = srcROIImgExt.getData(rect); } lookupTable.lookup(sources[0], dest, destRect, roi); } else { lookupTable.lookup(sources[0], dest, destRect, null); } }
/** * Performs the table lookup operation within the specified bounds. */ protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { // ROI bounds calculations Raster tile = sources[0]; Rectangle rect = tile.getBounds(); // ROI calculation if roiAccessor is used if (useRoiAccessor) { // Note that the getExtendedData() method is not called because the input images are padded. // For each image there is a check if the rectangle is contained inside the source image; // if this not happen, the data is taken from the padded image. Raster roi = null; if (srcROIImage.getBounds().contains(rect)) { roi = srcROIImage.getData(rect); } else { roi = srcROIImgExt.getData(rect); } lookupTable.lookup(sources[0], dest, destRect, roi); } else { lookupTable.lookup(sources[0], dest, destRect, null); } }
float[] dataArray = warpedImage.getData(targetRectangle).getSamples(x0, y0, w, h, 0, (float[]) null);
final float[] dataArray = warpedImage.getData(targetRectangle).getSamples(x0, y0, w, h, 0, (float[]) null);
@Test public void testAveraging() { final RenderedOp mosaicImage = MosaicDescriptor.create(sourceImages, MosaicDescriptor.MOSAIC_TYPE_BLEND, alphaImages, null, null, null, null); final Raster data = mosaicImage.getData(); float sample = data.getSampleFloat(0, 0, 0); assertEquals(5.1f, sample, 0.0f); sample = data.getSampleFloat(5, 5, 0); assertEquals(5.1f, sample, 0.0f); }
@Test public void testExpandGrayCaseC() { // create gray indexed image BufferedImage bi = new BufferedImage(10, 10, BufferedImage.TYPE_BYTE_GRAY); Graphics2D gr = bi.createGraphics(); gr.setColor(Color.GRAY); gr.fillRect(0, 0, 10, 10); gr.dispose(); // create a RGB color model final ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), false, false, Transparency.OPAQUE, bi.getSampleModel().getDataType()); // set the destination image layout final ImageLayout2 il = new ImageLayout2(bi); il.setColorModel(cm); il.setSampleModel(cm.createCompatibleSampleModel(bi.getWidth(), bi.getHeight())); RenderingHints ri = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, il); // perform color expansion ParameterBlockJAI pbj = new ParameterBlockJAI("ColorConvert"); pbj.addSource(bi); pbj.setParameter("colorModel", cm); pbj.setParameter("noData", RangeFactory.create(-1, -1)); RenderedOp finalimage = JAI.create("ColorConvert", pbj, ri); int[] pixel = new int[3]; finalimage.getData().getPixel(0, 0, pixel); assertEquals(128, pixel[0]); assertEquals(128, pixel[1]); assertEquals(128, pixel[2]); }
@Test public void testThatImageMinXYAreImportant() throws Exception { int minX = 4; int minY = 3; final RenderedOp src = ConstantDescriptor.create(16F, 16F, new Short[]{(short) 33}, null); final RenderedOp dst = CropDescriptor.create(src, (float) minX, (float) minY, 8F, 8F, null); assertEquals(minX, dst.getMinX()); assertEquals(minY, dst.getMinY()); // Test that we have to use the min X and Y try { dst.getData(new Rectangle(0, 0, 1, 1)); fail("IllegalArgumentException thrown by JAI expected"); } catch (IllegalArgumentException e) { // ok } final Raster data = dst.getData(new Rectangle(minX, minY, 1, 1)); final short[] outData = new short[1]; // Test that we have to use the min X and Y try { data.getDataElements(0, 0, outData); fail("ArrayIndexOutOfBoundsException thrown by AWT expected"); } catch (ArrayIndexOutOfBoundsException e) { // ok } data.getDataElements(minX, minY, outData); assertEquals(33, outData[0]); // In many cases, we use the tile rectangles in order to retrieve pixel data // So make sure it also considers the min X and Y assertEquals(new Rectangle(minX, minY, 8, 8), dst.getTileRect(0, 0)); }
@Test public void testMosaicUpdate() { final RenderedOp firstImage = MosaicDescriptor.create(Arrays.copyOf(sourceImages, 3), MosaicDescriptor.MOSAIC_TYPE_BLEND, Arrays.copyOf(alphaImages, 3), null, null, null, null); final PlanarImage[] alphaUpdateImages = { PlanarImage.wrapRenderedImage(ConstantDescriptor.create(10.0f, 10.0f, new Float[]{6.0f}, null)), PlanarImage.wrapRenderedImage(ConstantDescriptor.create(10.0f, 10.0f, new Float[]{4.0f}, null)) }; final RenderedImage[] sourceUpdateImages = {firstImage, sourceImages[3]}; final RenderedOp updatedImage = MosaicDescriptor.create(sourceUpdateImages, MosaicDescriptor.MOSAIC_TYPE_BLEND, alphaUpdateImages, null, null, null, null); final Raster data = updatedImage.getData(); float sample = data.getSampleFloat(0, 0, 0); assertEquals(5.1f, sample, 0.0f); sample = data.getSampleFloat(5, 5, 0); assertEquals(5.1f, sample, 0.0f); } }
sources[0] = srcIMG.getData(srcRect); } else { sources[0] = extendedIMG.getData(srcRect);
roiRaster = srcROIImage.getData(computableArea); }else{ roiRaster = srcROIImgExt.getData(computableArea);
roiRaster = srcROIImage.getData(computableArea); }else{ roiRaster = srcROIImgExt.getData(computableArea);
borderImg.getData();
roiRaster = srcROIImage.getData(srcRect); } else { roiRaster = srcROIImgExt.getData(srcRect);
roiRaster = srcROIImage.getData(srcRect); } else { roiRaster = srcROIImgExt.getData(srcRect);
roi = srcROIImage.getData(srcRect); } else{ roi = srcROIImgExt.getData(srcRect);
roiRaster = srcROIImage.getData(srcRect); }else{ roiRaster = srcROIImgExt.getData(srcRect);
roiRaster = srcROIImage.getData(srcRect); }else{ roiRaster = srcROIImgExt.getData(srcRect);