final ColorModel cm = image.getColorModel(); final int numBands = sm.getNumBands(); final GridSampleDimension[] bands = new GridSampleDimension[numBands];
final ColorModel cm = image.getColorModel(); final int numBands = sm.getNumBands(); final GridSampleDimension[] bands = new GridSampleDimension[numBands];
source, srcRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor dstAccessor = new RasterAccessor(dest, destRect, formatTags[1], getColorModel());
final ColorModel cm = image.getColorModel(); final int numBands = sm.getNumBands(); final GridSampleDimension[] bands = new GridSampleDimension[numBands];
/******************************************************************************* * * @inheritDoc * ******************************************************************************/ public ColorModel getColorModel() { return getPlanarImage().getColorModel(); }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Nonnull @Override public ColorModel getColorModel() { return getPlanarImage().getColorModel(); }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Nonnull @Override public <T> T getInnerProperty (final @Nonnull Class<T> propertyClass) { if (propertyClass.equals(PlanarImage.class)) { return (T)getPlanarImage(); } if (propertyClass.equals(SampleModel.class)) { return (T)getPlanarImage().getSampleModel(); } if (propertyClass.equals(ColorModel.class)) { return (T)getPlanarImage().getColorModel(); } throw new IllegalArgumentException(propertyClass.getName()); }
/******************************************************************************* * * ******************************************************************************/ public <T> T getInnerProperty (Class<T> propertyClass) { if (propertyClass.equals(PlanarImage.class)) { return (T)getPlanarImage(); } if (propertyClass.equals(SampleModel.class)) { return (T)getPlanarImage().getSampleModel(); } if (propertyClass.equals(ColorModel.class)) { return (T)getPlanarImage().getColorModel(); } throw new IllegalArgumentException(propertyClass.getName()); }
if (image.getColorModel() == null) { layout = (ImageLayout) hints.get(JAI.KEY_IMAGE_LAYOUT); final ColorModel tempCM = ImageIOUtilities.createColorModel(image.getSampleModel());
public void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { LOGGER.debug("Start computing region: " + destRect); ColorModel srcCM = getSourceImage(0).getColorModel(); ColorModel destCM = getColorModel(); Object srcData = null; Object destData = null; for (int i = destRect.x + destRect.width; --i >= destRect.x;) { for (int j = destRect.y + destRect.height; --j >= destRect.y;) { srcData = sources[0].getDataElements(i, j, srcData); destData = destCM.getDataElements(srcCM.getRGB(srcData), destData); dest.setDataElements(i, j, destData); } } LOGGER.debug("Region computed: " + destRect); }
public void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { ColorModel srcCM = getSourceImage(0).getColorModel(); ColorModel destCM = getColorModel(); Object srcData = null; Object destData = null; for (int i = destRect.x + destRect.width; --i >= destRect.x;) { for (int j = destRect.y + destRect.height; --j >= destRect.y;) { srcData = sources[0].getDataElements(i, j, srcData); int rgb = srcCM.getRGB(srcData); if (srcCM.getRed(srcData) == transColor.getRed() && srcCM.getGreen(srcData) == transColor.getGreen() && srcCM.getBlue(srcData) == transColor.getBlue()) { destData = destCM.getDataElements(transColor.getRGB(), destData); } else { destData = destCM.getDataElements(rgb, destData); } dest.setDataElements(i, j, destData); } } }
@Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterAccessor latAcc = new RasterAccessor(sources[0], destRect, latRasterFormatTag, getSourceImage(0).getColorModel()); RasterAccessor lonAcc = new RasterAccessor(sources[1], destRect, lonRasterFormatTag, getSourceImage(1).getColorModel()); RasterAccessor maskAcc = null; if (maskRasterFormatTag != null) { maskAcc = new RasterAccessor(sources[2], destRect, maskRasterFormatTag, getSourceImage(2).getColorModel()); } RasterAccessor destAcc = new RasterAccessor(dest, destRect, targetRasterFormatTag, getColorModel()); if (latAcc.getDataType() == DataBuffer.TYPE_DOUBLE) { processDoubleLoop(latAcc, lonAcc, maskAcc, destAcc, destRect); } else if (latAcc.getDataType() == DataBuffer.TYPE_FLOAT) { processFloatLoop(latAcc, lonAcc, maskAcc, destAcc, destRect); } else { throw new IllegalStateException("unsupported data type: " + latAcc.getDataType()); } destAcc.copyDataToRaster(); }
/******************************************************************************* * * @inheritDoc * ******************************************************************************/ protected PlanarImage execute (final ChangeFormatOp operation, final EditableImage image, PlanarImage planarImage) { logger.info("execute(" + operation + ", " + image + ", " + planarImage); final ParameterBlock pb = new ParameterBlock(); pb.addSource(planarImage); pb.add(operation.getType().value()); RenderingHints hints = null; final EditableImage.DataType dataType = operation.getType(); if (dataType == EditableImage.DataType.SHORT) { final ImageLayout imageLayout = new ImageLayout(); imageLayout.setColorModel(planarImage.getColorModel()); hints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, imageLayout); logger.info(">>>> using hints: " + hints); } planarImage = JAI.create("format", pb, hints); JAIUtils.logImage(logger, ">>>> ChangeFormatJAIOp returning", planarImage); return planarImage; } }
@Override protected PlanarImage execute (final ChangeFormatOp operation, final EditableImage image, PlanarImage planarImage) { final ParameterBlock pb = new ParameterBlock(); pb.addSource(planarImage); pb.add(operation.getType().value()); RenderingHints hints = null; final EditableImage.DataType dataType = operation.getType(); if (dataType == EditableImage.DataType.SHORT) { final ImageLayout imageLayout = new ImageLayout(); imageLayout.setColorModel(planarImage.getColorModel()); hints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, imageLayout); log.info(">>>> using hints: {}", hints); } planarImage = JAI.create("format", pb, hints); JAIUtils.logImage(log, ">>>> ChangeFormatJAIOp returning {}", planarImage); return planarImage; } }
/** * Do lookups for the specified destination rectangle * * @param sources an array of source Rasters * @param dest a WritableRaster tile containing the area to be computed. * @param destRect the rectangle within dest to be processed. */ @Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterFormatTag[] formatTags = getFormatTags(); Raster source = sources[0]; Rectangle srcRect = mapDestRect(destRect, 0); RasterAccessor srcAcc = new RasterAccessor(source, srcRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor destAcc = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); doLookup(srcAcc, destAcc); }
@Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterFormatTag[] formatTags = getFormatTags(); RasterAccessor s = new RasterAccessor(sources[0], destRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor d = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); switch (d.getDataType()) { case 4: // '\004' computeRectFloat(s, d); break; case 5: // '\005' computeRectDouble(s, d); break; } d.copyDataToRaster(); }
@Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterFormatTag[] formatTags = getFormatTags(); RasterAccessor s = new RasterAccessor(sources[0], destRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor d = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); switch (d.getDataType()) { case 4: // '\004' computeRectFloat(s, d, (float) replacementValue); break; case 5: // '\005' computeRectDouble(s, d, replacementValue); break; } d.copyDataToRaster(); }
@Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterFormatTag[] formatTags = getFormatTags(); RasterAccessor s = new RasterAccessor(sources[0], destRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor d = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); switch (d.getDataType()) { case 4: // '\004' computeRectFloat(s, d); break; case 5: // '\005' computeRectDouble(s, d); break; } d.copyDataToRaster(); }
@Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterFormatTag[] formatTags = getFormatTags(); RasterAccessor s = new RasterAccessor(sources[0], destRect, formatTags[0], getSourceImage(0).getColorModel()); RasterAccessor d = new RasterAccessor(dest, destRect, formatTags[1], getColorModel()); switch (d.getDataType()) { case 4: // '\004' computeRectFloat(s, d, (float) replacementValue); break; case 5: // '\005' computeRectDouble(s, d, replacementValue); break; } d.copyDataToRaster(); }
@Override protected void computeRect(Raster[] sources, WritableRaster dest, Rectangle destRect) { RasterFormatTag[] formatTags = getFormatTags(); RasterAccessor[] sourceRasterAccessors = new RasterAccessor[sources.length]; for (int i = 0; i < sources.length; i++) { sourceRasterAccessors[i] = new RasterAccessor(sources[i], destRect, formatTags[i], getSourceImage(i).getColorModel()); } RasterAccessor d = new RasterAccessor(dest, destRect, formatTags[sources.length], getColorModel()); switch (d.getDataType()) { case DataBuffer.TYPE_FLOAT: computeRectFloat(sourceRasterAccessors, d); break; case DataBuffer.TYPE_DOUBLE: computeRectDouble(sourceRasterAccessors, d); break; default: throw new OperatorException("Unable to compute raster for non floating number data type"); } d.copyDataToRaster(); }