@Override public RenderedImage createImage(int sourceLevel) { return new ReplaceValueOpImage(srcImage, noDataValue, newValue, targetDataType); } });
@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 0: // '\0' computeRectByte(s, d, oldValue.byteValue(), newValue.byteValue()); break; case 1: // '\001' case 2: // '\002' computeRectShort(s, d, oldValue.shortValue(), newValue.shortValue()); break; case 3: // '\003' computeRectInt(s, d, oldValue.intValue(), newValue.intValue()); break; case 4: // '\004' computeRectFloat(s, d, oldValue.floatValue(), newValue.floatValue()); break; case 5: // '\005' computeRectDouble(s, d, oldValue.doubleValue(), newValue.doubleValue()); break; } d.copyDataToRaster(); }
/** * The {@code valueToBeReplaced} are replaced by {@code replaceValue} within the {@code sourceImage} * * @param sourceImage The source image. * @param oldValue The value to be replaced. * @param newValue The value replacing the old value. * @param targetType the data type of the resulting image */ public ReplaceValueOpImage(RenderedImage sourceImage, Number oldValue, Number newValue, int targetType) { super(sourceImage, createImageLayout(sourceImage, targetType), null, true); this.oldValue = oldValue; this.newValue = newValue; }
ReplaceValueOpImage nanImage = new ReplaceValueOpImage(sourceImage, -1, Double.NaN, DataBuffer.TYPE_DOUBLE); assertEquals(DataBuffer.TYPE_DOUBLE, nanImage.getSampleModel().getDataType()); double[] result = nanImage.getData().getPixels(0, 0, width, height, new double[width * height]);
ReplaceValueOpImage nanImage = new ReplaceValueOpImage(sourceImage, 1.7, Double.NaN, DataBuffer.TYPE_DOUBLE); assertEquals(DataBuffer.TYPE_DOUBLE, nanImage.getSampleModel().getDataType()); double[] result = nanImage.getData().getPixels(0, 0, width, height, new double[width * height]);
ReplaceValueOpImage nanImage = new ReplaceValueOpImage(sourceImage, (short)-1, (short)-99, DataBuffer.TYPE_SHORT); assertEquals(DataBuffer.TYPE_SHORT, nanImage.getSampleModel().getDataType()); float[] result = nanImage.getData().getPixels(0, 0, width, height, new float[width * height]);
ReplaceValueOpImage nanImage = new ReplaceValueOpImage(sourceImage, -1, Float.NaN, DataBuffer.TYPE_FLOAT); assertEquals(DataBuffer.TYPE_FLOAT, nanImage.getSampleModel().getDataType()); float[] result = nanImage.getData().getPixels(0, 0, width, height, new float[width * height]);