Refine search
final ParameterBlock pbjImageRead = new ParameterBlock(); pbjImageRead.add(rasterFile); pbjImageRead.add(imageIndex); pbjImageRead.add(false); pbjImageRead.add(false); layout.setTileWidth(tileDimension.width).setTileHeight(tileDimension.height); raster = JAI.create( "ImageRead", pbjImageRead, new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout)); } else raster = JAI.create("ImageRead", pbjImageRead); if (raster != null) raster.getWidth(); return raster;
final int width = image.getWidth(); final int height = image.getHeight(); final int tileHeight = image.getTileHeight(); final int tileWidth = image.getTileWidth(); final Object o = image.getProperty(ImageReadDescriptor.PROPERTY_NAME_IMAGE_READER); if (o instanceof ImageReader) { final ImageReader reader = (ImageReader) o; return new ImageWorker(image) .setRenderingHints(hints) .format(image.getSampleModel().getDataType()) .getRenderedOperation();
if (TestData.isInteractiveTest()) ImageIOUtilities.visualize(image, "testSWANLOGARITHMIC"); ImageWorker w = new ImageWorker(image) .setROI(new ROI(new ImageWorker(image).binarize(0).getRenderedImage())); final RenderedOp d = w.piecewise(transform, Integer.valueOf(2)).getRenderedOperation(); d.getTiles(); if (TestData.isInteractiveTest()) ImageIOUtilities.visualize(finalImage, "testSWANLOGARITHMIC"); else finalImage.getTiles(); finalImage.dispose();
if (image.getMinX() == x && image.getMinY() == y && image.getWidth() == width && image.getHeight() == height) { return this; if (image instanceof RenderedOp) { RenderedOp op = (RenderedOp) image; if ("Crop".equals(op.getOperationName()) || "GTCrop".equals(op.getOperationName())) { ParameterBlock paramBlock = op.getParameterBlock(); source = paramBlock.getRenderedSource(0); float sx = paramBlock.getFloatParameter(0); float sy = paramBlock.getFloatParameter(1); float sWidth = paramBlock.getFloatParameter(2); float sHeight = paramBlock.getFloatParameter(3); pb.set(roi, 4); pb.set(nodata, 5); if (isNoDataNeeded()) { double destinationNoData = nodata != null image = JAI.create("Crop", pb, commonHints); invalidateStatistics(); return this;
ImageWorker w = new ImageWorker(planarImage); w.scale( new Float(rescaleX), new Float(rescaleY), 0.0f, Interpolation.getInstance(interpolation)); RenderedOp result = w.getRenderedOperation(); Raster scaledImageRaster = result.getData(); if (!(scaledImageRaster instanceof WritableRaster)) scaledImageRaster = result.copyData();
ParameterBlock pb = op.getParameterBlock(); PlanarImage dst = op.getRendering(); if (dst instanceof GeometricOpImage && ((GeometricOpImage) dst).getBorderExtender() == null) { srcBounds = new Rectangle( src.getMinX() + interp.getLeftPadding(), src.getMinY() + interp.getTopPadding(), Rectangle dstBounds = op.getBounds(); layout.setWidth(w); layout.setHeight(h); layout.setTileWidth(op.getTileWidth()); layout.setTileHeight(op.getTileHeight()); RenderingHints hints = op.getRenderingHints(); hints.add(new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout)); RenderingHints warpingHints = op.getRenderingHints(); warpingHints.remove(JAI.KEY_IMAGE_LAYOUT); Hints localHints = new Hints(op.getRenderingHints()); localHints.remove(JAI.KEY_IMAGE_LAYOUT); ImageLayout il = new ImageLayout(); il.setWidth(dstBounds.width); il.setHeight(dstBounds.height); il.setTileWidth(op.getTileWidth());
RenderedOp op = (RenderedOp) opNode; ParameterBlock pb = op.getParameterBlock(); RenderedImage src = pb.getRenderedSource(0); Object property = src.getProperty("ROI"); if (property == null || property.equals(java.awt.Image.UndefinedProperty) || !(property instanceof ROI)) { srcBounds = new Rectangle(src.getMinX(), src.getMinY(), src.getWidth(), src.getHeight()); if (!srcBounds.contains(srcROI.getBounds())) { srcROI = srcROI.intersect(new ROIShape(srcBounds));
RenderedOp op = (RenderedOp) opNode; ParameterBlock pb = op.getParameterBlock(); if (pb.getNumParameters() >= 4 && pb.getObjectParameter(3) != null) { PlanarImage dst = op.getRendering(); if (dst instanceof GeometricOpImage && ((GeometricOpImage) dst).getBorderExtender() == null) { srcBounds = new Rectangle( src.getMinX() + interp.getLeftPadding(), src.getMinY() + interp.getTopPadding(), Hints localHints = new Hints(op.getRenderingHints()); localHints.remove(JAI.KEY_IMAGE_LAYOUT); ImageLayout il = new ImageLayout(); Rectangle dstBounds = op.getBounds(); il.setMinX(dstBounds.x); il.setMinY(dstBounds.y); il.setWidth(dstBounds.width); il.setHeight(dstBounds.height); il.setTileWidth(op.getTileWidth()); il.setTileWidth(op.getTileHeight()); localHints.add(new RenderingHints(JAI.KEY_IMAGE_LAYOUT, il)); Rectangle dstBounds = op.getBounds();
sourceArea.grow(2, 2); if (sourceArea.isEmpty()) { if (LOGGER.isLoggable(java.util.logging.Level.FINE)) { LOGGER.fine( if (raster.getColorModel() instanceof IndexColorModel && expandToRGB) { raster = new ImageWorker(raster).forceComponentColorModel().getRenderedImage(); raster = new ImageWorker(raster).retainBands(bands).getRenderedImage(); ColorModel colorModel = raster.getColorModel(); if (colorModel == null) { ImageLayout layout = (ImageLayout) hints.get(JAI.KEY_IMAGE_LAYOUT); ImageIOUtilities.createColorModel(raster.getSampleModel()); if (newColorModel != null) { layout.setColorModel(newColorModel); sourceArea.setRect(readParameters.getSourceRegion()); PlanarImage theImage = ((RenderedOp) pi).getRendering(); theImage.setProperty("ROI", transformed);
affineImgNear.getTile(0, 0); double actualWidth = roiNearBounds.getWidth(); double actualHeight = roiNearBounds.getHeight(); double actualminX = roiNearBounds.getMinX(); double actualminY = roiNearBounds.getMinY(); Rectangle srcBounds = new Rectangle(testIMG.getMinX() + interpNear.getLeftPadding(), testIMG.getMinY() + interpNear.getTopPadding(), testIMG.getWidth() - interpNear.getWidth() + 1, testIMG.getHeight() - interpNear.getHeight() + 1); Rectangle dstBounds = affineImgNear.getBounds(); ((RenderedOp)affineImgNear).dispose();
envelope.setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); RenderedOp image = JAI.create("ImageRead", new File(TestData.url(this, "test.tif").toURI())); "GC_ROI", new ROIShape( new Rectangle( image.getMinX() + 1, image.getMinY() + 1, image.getWidth() / 2, image.getHeight() / 2))); JAI.create( "ImageRead", new File(TestData.url(this, "small_4bands_UInt16.tif").toURI())); "GC_ROI", new ROIShape( new Rectangle( image2.getMinX() + 1, image2.getMinY() + 1, image2.getWidth() / 2, image2.getHeight() / 2))); gc = CoverageFactoryFinder.getGridCoverageFactory(null)
public void testTranslation(boolean useROIAccessor, int dataType, float xScale, float yScale, float xTrans, float yTrans, byte imageValue, Interpolation interpolation) { RenderedImage testIMG = createTestImage(dataType, DEFAULT_WIDTH, DEFAULT_HEIGHT, imageValue, false); PlanarImage testImgWithROI = PlanarImage.wrapRenderedImage(testIMG); testImgWithROI.setProperty("roi", new ROIShape(new Rectangle(0, 0, DEFAULT_WIDTH / 2, DEFAULT_HEIGHT / 2))); // Scaled images RenderedOp scaleImgNear = ScaleDescriptor.create(testImgWithROI, xScale, yScale, xTrans, yTrans, interpolation, null, useROIAccessor, null, null, null); scaleImgNear.getTiles(); // verify the translate int optimization, and that assertThat(scaleImgNear.getRendering(), instanceOf(TranslateIntOpImage.class)); Object roi = scaleImgNear.getProperty("roi"); assertThat(roi, instanceOf(ROI.class)); assertThat(((ROI) roi).getAsImage(), instanceOf(TranslateIntOpImage.class)); double actualX=scaleImgNear.getMinX(); double actualY=scaleImgNear.getMinY(); double expectedX=testIMG.getMinX()+ xTrans; double expectedY=testIMG.getMinY()+ yTrans; double tolerance = 0.1f; assertEquals(expectedX, actualX,tolerance); assertEquals(expectedY, actualY,tolerance); //Final Image disposal if(scaleImgNear instanceof RenderedOp){ ((RenderedOp)scaleImgNear).dispose(); } }
sourceRegion = new Rectangle(xmin, ymin, (xmax - xmin), ymax - ymin); requestedRegionEnvelope = new Envelope2D( int ymin = (int) Math.floor((fileNorth - requestedNorth) * scaleY + EPS); int ymax = (int) Math.ceil((fileNorth - requestedSouth) * scaleY - EPS); sourceRegion = new Rectangle(xmin, ymin, (xmax - xmin), ymax - ymin); requestedRegionEnvelope = new Envelope2D( if (sourceRegion.getWidth() <= 0 || sourceRegion.getHeight() <= 0) { return null; finalImage = rOp.getAsBufferedImage();
Rectangle rect = new Rectangle(org.x, org.y, tileWidth, tileHeight); Rectangle destRect = rect.intersection(theDest); Rectangle destRect1 = rect.intersection(getBounds()); if ((destRect.width <= 0) || (destRect.height <= 0)) { sources[0] = srcIMG.getData(srcRect); } else { sources[0] = extendedIMG.getData(srcRect);
RenderedOp op = (RenderedOp) image; Object mtProperty = op.getProperty("MathTransform"); Object sourceBoundsProperty = op.getProperty("SourceBoundingBox"); String opName = op.getOperationName(); final ParameterBlock sourceParamBlock = op.getParameterBlock(); if (WARP_REDUCTION_ENABLED && "Warp".equals(opName) RenderedOp at = JAI.create("Affine", pb, getRenderingHints()); Rectangle targetBB = at.getBounds(); int tileWidth = at.getTileWidth(); int tileHeight = at.getTileHeight(); ImageUtilities.disposeSinglePlanarImage(at); Rectangle sourceBB = (Rectangle) sourceBoundsProperty; if (source.getProperty("ROI") instanceof ROI) { PlanarImage sourceImage = op.getSourceImage(0); RenderedOp result = JAI.create("Warp", paramBlk, localHints); result.setProperty("MathTransform", chained); image = result; Object prop = result.getProperty("roi");
@Test public void createSequentialImage() throws Exception { ParameterBlockJAI pb = new ParameterBlockJAI("Jiffle"); String script = "dest = y() * width() + x();" ; pb.setParameter("script", script); pb.setParameter("destName", "dest"); Rectangle bounds = new Rectangle(0, 0, WIDTH, WIDTH); pb.setParameter("destBounds", bounds); RenderedOp op = JAI.create("Jiffle", pb); RenderedImage result = op.getRendering(); assertResult(result, script); }
imageLayout.setMinX(0); imageLayout.setMinY(0); imageLayout.setTileWidth(JAI.getDefaultTileSize().width); imageLayout.setTileHeight(JAI.getDefaultTileSize().height); imageLayout.setTileGridXOffset(0); imageLayout.setTileGridYOffset(0); int fittingRectHeight = scaleValue(imageHeight, level); Rectangle fitRect = new Rectangle(0, 0, fittingRectWidth, fittingRectHeight); final Rectangle destBounds = DefaultMultiLevelSource.getLevelImageBounds(fitRect, Math.pow(2.0, level)); if (mosaicOp.getWidth() < destBounds.width || mosaicOp.getHeight() < destBounds.height) { int rightPad = destBounds.width - mosaicOp.getWidth(); int bottomPad = destBounds.height - mosaicOp.getHeight(); mosaicOp = BorderDescriptor.create(mosaicOp, 0, rightPad, 0, bottomPad, borderExtender, null);
private void check(int type, RenderedImage src, RenderedOp shaded, boolean roiUsed, ROI roi, boolean nodataUsed, Range noData) { int tileWidth = shaded.getTileWidth(); int tileHeight = shaded.getTileHeight(); int minTileX = shaded.getMinTileX(); int minTileY = shaded.getMinTileY(); int numXTiles = shaded.getNumXTiles(); int numYTiles = shaded.getNumYTiles(); int maxTileX = minTileX + numXTiles; int maxTileY = minTileY + numYTiles; assertEquals(shaded.getWidth(), src.getWidth()); assertEquals(shaded.getHeight(), src.getHeight()); assertEquals(shaded.getMinX(), src.getMinX()); assertEquals(shaded.getMinY(), src.getMinY()); assertEquals(minTileX, src.getMinTileX()); assertEquals(minTileY, src.getMinTileY()); int srcBands = src.getSampleModel().getNumBands(); int dstBands = shaded.getNumBands(); assertEquals(srcBands, dstBands); double val = shaded.getTile(0,0).getSampleDouble(point.x, point.y, 0); boolean isInRoi = !roiUsed || (roiUsed && roi.contains(point.x, point.y));
@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)); }
private Rectangle produceMap(double minX, double maxX, double minY, double maxY) { this.map .getViewport() .setBounds( new ReferencedEnvelope(minX, maxX, minY, maxY, DefaultGeographicCRS.WGS84)); RenderedImageMapOutputFormat rasterMapProducer = new RenderedImageMapOutputFormat(getWMS()); RenderedImageMap imageMap = rasterMapProducer.produceMap(this.map); this.op = (RenderedOp) imageMap.getImage(); this.image = this.op.getAsBufferedImage(); imageMap.dispose(); return new Rectangle(0, 0, this.image.getWidth(), this.image.getHeight()); } }