Examples of ImageWorker


Examples of org.geotools.image.ImageWorker

            // see what the user thinks of the image
            boolean useAsReference = actualReferenceFile && INTERACTIVE
                    && ReferenceImageDialog.show(realignImage(actualImage));
            if (useAsReference) {
                try {
                    new ImageWorker(actualImage).writePNG(expectedFile, "FILTERED", 0.9f, false,
                            false);
                } catch (IOException e) {
                    throw (Error) new AssertionError("Failed to write the image to disk")
                            .initCause(e);
                }
View Full Code Here

Examples of org.geotools.image.ImageWorker

     *
     * @param image1
     * @return
     */
    private RenderedImage normalizeImage(RenderedImage image1) {
        image1 = new ImageWorker(image1).forceColorSpaceRGB().forceComponentColorModel()
                .getRenderedImage();
        if (image1.getMinX() != 0 || image1.getMinY() != 0) {
            image1 = PlanarImage.wrapRenderedImage(image1).getAsBufferedImage();
        }
        return image1;
View Full Code Here

Examples of org.geotools.image.ImageWorker

   
        //
        // MASKING INPUT COLOR as indicated
        //
    if(inputTransparentColor!=null){
        coverageRaster= new ImageWorker(coverageRaster).setRenderingHints(newHints).makeColorTransparent(inputTransparentColor).getRenderedOperation();
    }
   
    //
    // BUILDING COVERAGE
    //
View Full Code Here

Examples of org.geotools.image.ImageWorker

                // BORDER extender
                if (addBorderExtender) {
                    localHints.add(ImageUtilities.BORDER_EXTENDER_HINTS);
                }
               
                ImageWorker iw = new ImageWorker(raster);
                iw.setRenderingHints(localHints);
                iw.affine(finalRaster2Model, interpolation, request.getBackgroundValues());
        return new GranuleLoadingResult(iw.getRenderedImage(), null, granuleUrl, doFiltering, pamDataset);
      }
   
    } catch (IllegalStateException e) {
      if (LOGGER.isLoggable(java.util.logging.Level.WARNING)) {
        LOGGER.log(java.util.logging.Level.WARNING, new StringBuilder("Unable to load raster for granuleDescriptor ")
View Full Code Here

Examples of org.geotools.image.ImageWorker

                                if (imageBounds.isEmpty()) {
                                    // return back a constant image
                                    return null;
                                }
                                // crop
                                ImageWorker iw = new ImageWorker(mosaic);
                                iw.setRenderingHints(localHints);
                                iw.crop(imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height);
                                mosaic = iw.getRenderedImage();
                                imageBounds = PlanarImage.wrapRenderedImage(mosaic).getBounds();
                            }
   
                            // and, do we need to add a BORDER around the image?
                            if (!imageBounds.contains(rasterBounds)) {
                                mosaic = MergeBehavior.FLAT
                                        .process(
                                                new RenderedImage[] { mosaic },
                                                backgroundValues,
                                                sourceThreshold,
                                                (hasAlpha || doInputTransparency) ? new PlanarImage[] { in.alphaChannel }: new PlanarImage[] { null },
                                                new ROI[] { in.roi },
                                                request.isBlend() ? MosaicDescriptor.MOSAIC_TYPE_BLEND: MosaicDescriptor.MOSAIC_TYPE_OVERLAY,
                                                localHints);
                                roi=roi.add(new ROIGeometry(JTS.toGeometry(new ReferencedEnvelope(rasterBounds, null))));
                                if (footprintBehavior!=FootprintBehavior.None) {
                                    // Adding globalRoi to the output
                                    RenderedOp rop = (RenderedOp) mosaic;
                                    rop.setProperty("ROI", in.roi);
                                }
                            }
   
                        // add to final list
                        return new MosaicElement(in.alphaChannel, roi, mosaic, pamDataset);
                    }
                }
            }
            }

            // === do the mosaic as usual
            // prepare sources for the mosaic operation
            final RenderedImage[] sources = new RenderedImage[size];
            final PlanarImage[] alphas = new PlanarImage[size];
            ROI[] rois = new ROI[size];
            final PAMDataset[] pams = new PAMDataset[size];
            int realROIs=0;
            for (int i = 0; i < size; i++) {
                final MosaicElement mosaicElement = inputs.get(i);
                sources[i] = mosaicElement.source;
                alphas[i] = mosaicElement.alphaChannel;
                rois[i] = mosaicElement.roi;
                pams[i] = mosaicElement.pamDataset;

                // compose the overall ROI if needed
                if (mosaicElement.roi != null) {
                    realROIs++;
                }
            }
            if (realROIs == 0){
                rois = null;
            }


            // execute mosaic
            final RenderedImage mosaic =
                mergeBehavior.process(
                        sources,
                        backgroundValues,
                        sourceThreshold,
                        (hasAlpha || doInputTransparency) ? alphas : null,
                        rois,
                        request.isBlend() ? MosaicDescriptor.MOSAIC_TYPE_BLEND: MosaicDescriptor.MOSAIC_TYPE_OVERLAY,
                        localHints);
           
            ROI overallROI = mosaicROIs(rois);
            if (footprintBehavior != FootprintBehavior.None) {
                // Adding globalRoi to the output
                RenderedOp rop = (RenderedOp) mosaic;               
                rop.setProperty("ROI", overallROI);
            }
           
            final RenderedImage postProcessed = footprintBehavior.postProcessMosaic(mosaic, overallROI,localHints);
   
            // prepare for next step
            if(hasAlpha || doInputTransparency){
                return new MosaicElement(new ImageWorker(postProcessed).retainLastBand().getPlanarImage(), overallROI, postProcessed, Utils.mergePamDatasets(pams));
             } else {
                return new MosaicElement(null, overallROI, postProcessed, Utils.mergePamDatasets(pams));
             }           
           
        }
View Full Code Here

Examples of org.geotools.image.ImageWorker

            // have to add an extra band to the latter type of images for providing
            // alpha information to them.
            //
            //
            if (rasterManager.expandMe && granule.getColorModel() instanceof IndexColorModel) {
              granule = new ImageWorker(granule).forceComponentColorModel().getRenderedImage();
            }
       
            //
            // TRANSPARENT COLOR MANAGEMENT
            //
            if (doInputTransparency) {
                if (LOGGER.isLoggable(Level.FINE)) {
                    LOGGER.fine("Support for alpha on input granule " + result.granuleUrl);
                }
                granule = new ImageWorker(granule).makeColorTransparent(inputTransparentColor).getRenderedImage();
                hasAlpha=granule.getColorModel().hasAlpha();
                if(!granule.getColorModel().hasAlpha()){
                    // if the resulting image has no transparency (can happen with IndexColorModel then we need to try component
                    // color model
                    granule = new ImageWorker(granule).forceComponentColorModel(true).makeColorTransparent(inputTransparentColor).getRenderedImage();
                    hasAlpha=granule.getColorModel().hasAlpha();
                }
                assert hasAlpha;
               
            }
            PlanarImage alphaChannel=null;   
            if (hasAlpha || doInputTransparency) {
                ImageWorker w = new ImageWorker(granule);
                if (granule.getSampleModel() instanceof MultiPixelPackedSampleModel||granule.getColorModel() instanceof IndexColorModel) {
                    w.forceComponentColorModel();
                    granule=w.getRenderedImage();
                }
                // doing this here gives the guarantee that I get the correct index for the transparency band
                alphaIndex[0] = granule.getColorModel().getNumComponents() - 1;
                assert alphaIndex[0]< granule.getSampleModel().getNumBands();
               
                //
                // ALPHA in INPUT
                //
                // I have to select the alpha band and provide it to the final
                // mosaic operator. I have to force going to ComponentColorModel in
                // case the image is indexed.
                //
                alphaChannel = w.retainBands(alphaIndex).getPlanarImage();
            }
       
       
            //
            // ROI
View Full Code Here

Examples of org.geotools.image.ImageWorker

    // have to add an extra band to the latter type of images for providing
    // alpha information to them.
    //
    //
    if (rasterManager.expandMe && granule.getColorModel() instanceof IndexColorModel) {
      granule = new ImageWorker(granule).forceComponentColorModel().getRenderedImage();
    }

    //
    // TRANSPARENT COLOR MANAGEMENT
    //
View Full Code Here

Examples of org.geotools.image.ImageWorker

  private RenderedImage postProcessRaster(RenderedImage image) {
    // alpha on the final image
    if (transparentColor != null) {
      if (LOGGER.isLoggable(Level.FINE))
        LOGGER.fine("Support for alpha on final image");
      final ImageWorker w = new ImageWorker(image);
      if (image.getSampleModel() instanceof MultiPixelPackedSampleModel)
        w.forceComponentColorModel();
      return w.makeColorTransparent(transparentColor).getRenderedImage();
 
    }
    return image;
  }
View Full Code Here

Examples of org.geotools.image.ImageWorker

    // alpha on the final mosaic
    if (finalTransparentColor != null) {
      if (LOGGER.isLoggable(Level.FINE)){
          LOGGER.fine("Support for alpha on final mosaic");
      }
      return new MosaicOutput(new ImageWorker(mosaickedImage.image).makeColorTransparent(finalTransparentColor).getRenderedImage()
              ,mosaickedImage.pamDataset);

    }
    if (!needsReprojection){
        try {
           
            // creating source grid to world corrected to the pixel corner
                        final AffineTransform sourceGridToWorld = new AffineTransform((AffineTransform) finalGridToWorldCorner);
           
            // target world to grid at the corner
                        final AffineTransform targetGridToWorld = new AffineTransform(
                            request.spatialRequestHelper.isNeedsReprojection()?
                                request.spatialRequestHelper.getComputedGridToWorld():
                            request.spatialRequestHelper.getComputedGridToWorld());
                        targetGridToWorld.concatenate(CoverageUtilities.CENTER_TO_CORNER);
                       
                        // target world to grid at the corner
                        final AffineTransform targetWorldToGrid=targetGridToWorld.createInverse();
                        // final complete transformation
                        targetWorldToGrid.concatenate(sourceGridToWorld);
                       
                        //update final grid to world
                        finalGridToWorldCorner=new AffineTransform2D(targetGridToWorld);
                        //
                        // Check and see if the affine transform is doing a copy.
                        // If so call the copy operation.
                        //
                        // we are in raster space here, so 1E-3 is safe
                        if(XAffineTransform.isIdentity(targetWorldToGrid, Utils.AFFINE_IDENTITY_EPS))
                            return mosaickedImage;
           
            // create final image
            //
                        // In case we are asked to use certain tile dimensions we tile
                        // also at this stage in case the read type is Direct since
                        // buffered images comes up untiled and this can affect the
                        // performances of the subsequent affine operation.
                        //
                        final Hints localHints= new Hints(hints);
                        if (hints != null && !hints.containsKey(JAI.KEY_BORDER_EXTENDER)) {
                            final Object extender = hints.get(JAI.KEY_BORDER_EXTENDER);
                            if (!(extender != null && extender instanceof BorderExtender)) {
                                localHints.add(ImageUtilities.EXTEND_BORDER_BY_COPYING);
                            }
                        }
                       
                        ImageWorker iw = new ImageWorker(mosaickedImage.image);
                        iw.setRenderingHints(localHints);
                        iw.affine(targetWorldToGrid, interpolation, backgroundValues);
                        mosaickedImage.image = iw.getRenderedImage();
                    } catch (NoninvertibleTransformException e) {
                        if (LOGGER.isLoggable(Level.SEVERE)){
                            LOGGER.log(Level.SEVERE, "Unable to create the requested mosaic ", e );
                        }
                }
View Full Code Here

Examples of org.geotools.image.ImageWorker

   
    @Test
    public void test2BandsBug() {
        // build a transparent image
        BufferedImage image = new BufferedImage(256,256,BufferedImage.TYPE_BYTE_GRAY);
        image=new ImageWorker(image).addBand(image, true).getBufferedImage();
       
       
        // create a palette out of it
        RenderedImage indexed = quantize(image);
        assertTrue(indexed.getColorModel() instanceof IndexColorModel);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.