PlanarImage dst = op.getRendering(); if (dst instanceof GeometricOpImage && ((GeometricOpImage) dst).getBorderExtender() == null) {
PlanarImage theImage = ((RenderedOp) pi).getRendering(); theImage.setProperty("ROI", transformed);
// read in the original image from an input stream SeekableStream s = SeekableStream.wrapInputStream( inputStream, true); RenderedOp image = JAI.create("stream", s); ((OpImage)image.getRendering()).setTileCache(null); // now resize the image float scale = newWidth / image.getWidth(); RenderedOp resizedImage = JAI.create("SubsampleAverage", image, scale, scale, qualityHints); // lastly, write the newly-resized image to an // output stream, in a specific encoding JAI.create("encode", resizedImage, outputStream, "PNG", null);
PlanarImage dst = op.getRendering(); if (dst instanceof GeometricOpImage && ((GeometricOpImage) dst).getBorderExtender() == null) {
image = processor.createNS(getName(), parameters, hints).getRendering();
((OpImage) image.getRendering()).setTileCache(null);
private static Histogram createHistogram(PlanarImage sourceImage, Stx[] stxs) { final Histogram histogram = createHistogram(stxs); sourceImage.setProperty("histogram", histogram); if (sourceImage instanceof RenderedOp) { RenderedOp renderedOp = (RenderedOp) sourceImage; renderedOp.getRendering().setProperty("histogram", histogram); } return histogram; }
private RenderedImage crop(RenderedImage source, Rectangle cropArea) { ImageLayout layout = new ImageLayout(); layout.setMinX(cropArea.x); layout.setMinY(cropArea.y); layout.setWidth(cropArea.width); layout.setHeight(cropArea.height); return CropDescriptor.create(source, (float) cropArea.getX(), (float) cropArea.getY(), (float) cropArea.getWidth(), (float) cropArea.getHeight(), new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout)).getRendering(); }
private RenderedImage getWarpOperation(RenderedOp roiOp) { String name = roiOp.getOperationName(); if("binarize".equals(name)) { return roiOp.getSourceImage(0); } else { return roiOp.getRendering(); } }
public void assertBandMergeImplementation(AffineTransform affine, Class opImageClass) { RenderedImage[] images = BandMergeTest.images[DataBuffer.TYPE_BYTE]; List<AffineTransform> transforms = new ArrayList<AffineTransform>(); for (int i = 0; i < images.length; i++) { transforms.add(affine); } RenderedOp merged = BandMergeDescriptor.create(null, 0d, false, null, transforms, null, images); try { assertTrue(opImageClass.isInstance(merged.getRendering())); } finally { // Disposal of the output image merged.dispose(); } } }
(float) source.getHeight(), alphaValues, new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout)).getRendering();
PlanarImage dst = op.getRendering(); if (dst instanceof GeometricOpImage && ((GeometricOpImage)dst).getBorderExtender() == null) {
PlanarImage dst = op.getRendering(); if (dst instanceof GeometricOpImage && ((GeometricOpImage)dst).getBorderExtender() == null) {
RenderingHints hints = new RenderingHints(map); RenderedOp renderedOp = RescaleDescriptor.create(sourceImage, new double[] { scale }, new double[] { offset }, hints); sourceImage = renderedOp.getRendering(); this.metadata.setBandInfo(getSourceProduct().getBandIndex(srcBand.getName()), srcBand.getName(),
@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); }
/** * Not actually a unit-test, its just a code snippet allowing * to explore API specification and object state of a JAI RenderedOp. */ public void testJaiOperationParameterChange() { final BufferedImage sourceImage = new BufferedImage(16, 16, BufferedImage.TYPE_4BYTE_ABGR); ParameterBlockJAI params = new ParameterBlockJAI("scale"); params.setParameter("xScale", 2.0f); params.setParameter("yScale", 3.0f); params.addSource(sourceImage); final RenderedOp renderedOp = JAI.create("scale", params); final MockPCL mockPCL = new MockPCL(); renderedOp.addPropertyChangeListener(mockPCL); final PlanarImage rendering = renderedOp.getRendering(); assertSame(rendering, renderedOp.getRendering()); assertTrue(rendering instanceof OpImage); final PlanarImage instance = renderedOp.createInstance(); assertNotSame(instance, renderedOp); assertNotSame(instance, rendering); assertNotSame(instance, renderedOp.createInstance()); assertEquals("", mockPCL.trace); params = new ParameterBlockJAI("scale"); params.setParameter("xScale", 0.5f); params.setParameter("yScale", 3.3f); params.addSource(sourceImage); renderedOp.setParameterBlock(params); assertEquals("parameters;rendering;", mockPCL.trace); assertNotSame(rendering, renderedOp.getRendering()); assertSame(renderedOp.getRendering(), renderedOp.getRendering()); }
public void testTranslation(boolean useROIAccessor, int dataType, double xScale, double yScale, double xTrans, double 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 = Scale2Descriptor.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(); } }
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(); } }
renderedOp2.addPropertyChangeListener(mockPCL); final PlanarImage rendering = renderedOp2.getRendering(); assertSame(rendering, renderedOp2.getRendering()); assertTrue(rendering instanceof OpImage); assertNotSame(mockPCL.lastNewValue, mockPCL.lastOldValue); assertEquals(rendering, mockPCL.lastOldValue); assertEquals(renderedOp2.getRendering(), mockPCL.lastNewValue);
parameters, hints).getRendering();