if (image.getColorModel().hasAlpha()) { RenderedImage alpha = BandSelectDescriptor.create( image, new int[] {image.getSampleModel().getNumBands() - 1}, null); alpha = MultiplyConstDescriptor.create(alpha, new double[] {alphaThreshold}, null); image = BandSelectDescriptor.create(image, new int[] {0, 1, 2}, null);
sourceImage = BandSelectDescriptor.create(sourceImage, new int[] {band}, null);
/** * Retains inconditionnaly certain bands of {@linkplain #image}. All other * bands (if any) are discarded without any further processing. * * @param bands * the bands to retain. * @return this {@link ImageWorker}. * * @see #getNumBands * @see #retainFirstBand * @see BandSelectDescriptor */ public final ImageWorker retainBands(final int[] bands) { image = BandSelectDescriptor.create(image, bands, getRenderingHints()); return this; }
/** * Retains inconditionnaly certain bands of {@linkplain #image}. All other * bands (if any) are discarded without any further processing. * * @param bands * the bands to retain. * @return this {@link ImageWorker}. * * @see #getNumBands * @see #retainFirstBand * @see BandSelectDescriptor */ public final ImageWorker retainBands(final int[] bands) { image = BandSelectDescriptor.create(image, bands, getRenderingHints()); return this; }
/** * Retains inconditionnaly the first {@code numBands} of {@linkplain #image}. * All other bands (if any) are discarted without any further processing. * This method does nothing if the current {@linkplain #image} does not have * a greater amount of bands than {@code numBands}. * * @param numBands * the number of bands to retain. * @return this {@link ImageWorker}. * * @see #getNumBands * @see #retainFirstBand * @see BandSelectDescriptor */ public final ImageWorker retainBands(final int numBands) { if (numBands <= 0) { throw new IndexOutOfBoundsException(Errors.format(ErrorKeys.ILLEGAL_ARGUMENT_$2, "numBands", new Integer(numBands))); } if (getNumBands() > numBands) { final int[] bands = new int[numBands]; for (int i=0; i<bands.length; i++) { bands[i] = i; } image = BandSelectDescriptor.create(image, bands, getRenderingHints()); } // All post conditions for this method contract. assert getNumBands() <= numBands; return this; }
/** * Retains inconditionnaly the first {@code numBands} of {@linkplain #image}. * All other bands (if any) are discarted without any further processing. * This method does nothing if the current {@linkplain #image} does not have * a greater amount of bands than {@code numBands}. * * @param numBands * the number of bands to retain. * @return this {@link ImageWorker}. * * @see #getNumBands * @see #retainFirstBand * @see BandSelectDescriptor */ public final ImageWorker retainBands(final int numBands) { if (numBands <= 0) { throw new IndexOutOfBoundsException(Errors.format(ErrorKeys.ILLEGAL_ARGUMENT_$2, "numBands", numBands)); } if (getNumBands() > numBands) { final int[] bands = new int[numBands]; for (int i=0; i<bands.length; i++) { bands[i] = i; } image = BandSelectDescriptor.create(image, bands, getRenderingHints()); } // All post conditions for this method contract. assert getNumBands() <= numBands; return this; }
RenderedOp torgb = BandSelectDescriptor.create( img, new int[] { 0, 1, 2 }, null );
PlanarImage alphaChannel = BandSelectDescriptor.create(renderedOp, new int[] { bandOffsets[1] }, null); PlanarImage grayChannel = BandSelectDescriptor.create(renderedOp, new int[] { bandOffsets[0] }, null); PlanarImage whiteBgrnd = ConstantDescriptor.create((float) renderedOp.getWidth(), (float) renderedOp.getHeight(), bgrndBandValues, null); PlanarImage alphaChannel = BandSelectDescriptor.create(renderedOp, new int[] { bandOffsets[3] }, null); PlanarImage rgbChannels = BandSelectDescriptor.create(renderedOp, new int[] { bandOffsets[0], bandOffsets[1], bandOffsets[2] }, null); PlanarImage whiteBgrnd = ConstantDescriptor.create((float) renderedOp.getWidth(), (float) renderedOp.getHeight(), bgrndBandValues, null);
PlanarImage alphaChannel = BandSelectDescriptor.create(renderedOp, new int[] { bandOffsets[1] }, null); PlanarImage grayChannel = BandSelectDescriptor.create(renderedOp, new int[] { bandOffsets[0] }, null); PlanarImage whiteBgrnd = ConstantDescriptor.create((float) renderedOp.getWidth(), (float) renderedOp.getHeight(), bgrndBandValues, null); PlanarImage alphaChannel = BandSelectDescriptor.create(renderedOp, new int[] { bandOffsets[3] }, null); PlanarImage rgbChannels = BandSelectDescriptor.create(renderedOp, new int[] { bandOffsets[0], bandOffsets[1], bandOffsets[2] }, null); PlanarImage whiteBgrnd = ConstantDescriptor.create((float) renderedOp.getWidth(), (float) renderedOp.getHeight(), bgrndBandValues, null);
public ColorReduction(RenderedImage image, RenderingHints hints, int numColors, int alpaThreshold, int subsx, int subsy) { super(image, new ImageLayout(image), null, false); this.numColors = numColors; this.alphaThreshold = alpaThreshold; if (image.getColorModel().hasAlpha()) { RenderedImage alpha = BandSelectDescriptor.create(image, new int[] { image.getSampleModel().getNumBands() - 1 }, null); alpha = MultiplyConstDescriptor.create(alpha, new double[] { alphaThreshold }, null); image = BandSelectDescriptor.create(image, new int[] { 0, 1, 2 }, null); final ImageLayout layout = new ImageLayout(); layout.setColorModel(new ComponentColorModel(ColorSpace .getInstance(ColorSpace.CS_sRGB), true, false, Transparency.BITMASK, DataBuffer.TYPE_BYTE)); image = BandMergeDescriptor.create(image, alpha, new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout)) .getNewRendering(); this.setSource(image, 0); } // force palette computation this.paletteBuilder = new CustomPaletteBuilder(image, this.numColors,subsx, subsy, 1); this.hints=hints; }
opaqueBands[i] = i; image = BandSelectDescriptor.create(image, opaqueBands, hints); numBands=numColorBands;
il.setColorModel(cm); RenderingHints hints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, il); RenderedOp grayAlpha = BandSelectDescriptor.create(baseImage, new int[] {0, 3}, hints); ByteArrayOutputStream output = new ByteArrayOutputStream(); try {
private RenderedOp getBandSourceImage(int i) { RenderedOp bandImage = BandSelectDescriptor.create(sourceImage, new int[]{i}, null); int tileWidth = bandImage.getTileWidth(); int tileHeight = bandImage.getTileHeight(); ImageLayout imageLayout = new ImageLayout(); boolean noSourceImageTiling = tileWidth == bandImage.getWidth() && tileHeight == bandImage.getHeight(); if (noSourceImageTiling) { tileWidth = Math.min(bandImage.getWidth(), 512); tileHeight = Math.min(bandImage.getHeight(), 512); imageLayout.setTileWidth(tileWidth); imageLayout.setTileHeight(tileHeight); } imageLayout.setSampleModel(new SingleBandedSampleModel(bandImage.getSampleModel().getDataType(), tileWidth, tileHeight)); bandImage = FormatDescriptor.create(bandImage, bandImage.getSampleModel().getDataType(), new RenderingHints(JAI.KEY_IMAGE_LAYOUT, imageLayout)); return bandImage; }
image = BandSelectDescriptor.create(image, new int[]{0, 1, 2}, null);
image = BandSelectDescriptor.create(image, new int[]{0, 1, 2}, null);
} else { bandImage = BandSelectDescriptor.create(tiffImage, new int[]{bandIndex}, null);
image = BandSelectDescriptor.create(image, new int[]{0, 1, 2}, null);
RenderedOp selected = BandSelectDescriptor.create(image, new int[] { 2 }, null);
sourceImage=BandSelectDescriptor.create(sourceImage, new int []{band}, null);