private boolean hasAlphaBand(ColorModel cm) { // num components returns the alpha, num _color_ components does not return (cm.getNumComponents() == 2 && cm.getNumColorComponents() == 1) /* gray-alpha case */ || (cm.getNumComponents() == 4 && cm.getNumColorComponents() == 3) /* rgba case */; }
private int getAlphaBandIndex(GridCoverage2D coverage) { final ColorModel cm = coverage.getRenderedImage().getColorModel(); if (!cm.hasAlpha() || cm.getNumComponents() == cm.getNumColorComponents()) { throw new IllegalArgumentException( "The source coverage does not have an alpha band, cannot extract an " + "alpha band"); } // the alpha band is always the last (see ComponentColorModel.getAlphaRaster or the // getAlpha(object) code if (cm.getNumColorComponents() == 1) { // gray-alpha return 1; } else { // rgba/argb return 3; } }
final int defNumComponents = defaultCM.getNumColorComponents(); int actualNumComponents = actualCM.getNumColorComponents(); int colorComponentsDifference = Math.abs(defNumComponents - actualNumComponents);
this.bytesPerPixel = image.getColorModel().getNumColorComponents() * bytesPerComponent; this.imageType = image.getType(); this.hasAlpha = image.getColorModel().getNumComponents() != image.getColorModel() .getNumColorComponents(); this.alphaImageData = hasAlpha ? new byte[width * height * bytesPerComponent] : null;
public void extract(BufferedImage img) { int image_width=img.getWidth(); //width int image_height=img.getHeight(); //height int image_channels=img.getColorModel().getNumColorComponents();
public void extract(BufferedImage img) { int image_width=img.getWidth(); //width int image_height=img.getHeight(); //height int image_channels=img.getColorModel().getNumColorComponents();
/** Forces the provided {@link ColorModel} via the JAI ColorConvert operation. */ private void forceColorModel(final ColorModel cm) { final ImageLayout2 il = new ImageLayout2(image); il.setColorModel(cm); il.setSampleModel(cm.createCompatibleSampleModel(image.getWidth(), image.getHeight())); final RenderingHints oldRi = this.getRenderingHints(); final RenderingHints newRi = (RenderingHints) oldRi.clone(); newRi.add(new RenderingHints(JAI.KEY_IMAGE_LAYOUT, il)); setRenderingHints(newRi); // Setting the parameter blocks ParameterBlock pb = new ParameterBlock(); pb.setSource(image, 0); pb.set(cm, 0); pb.set(roi, 1); pb.set(nodata, 2); if (isNoDataNeeded()) { if (background != null && background.length > 0) { // Elaborating the final NoData value if (background.length != cm.getNumColorComponents()) { throw new IllegalArgumentException("Wrong DestinationNoData value defined"); } pb.set(background, 3); } } image = JAI.create("ColorConvert", pb, getRenderingHints()); // restore RI this.setRenderingHints(oldRi); // invalidate stats invalidateStatistics(); }
@Test public void testGetColorModelJPEG() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); ColorModel colorModel = factory.getColorModel(); assertNotNull(colorModel); assertEquals(3, colorModel.getNumColorComponents()); // getNumComponents may include alpha, we don't care assertEquals(ColorSpace.getInstance(ColorSpace.CS_sRGB), colorModel.getColorSpace()); for (int i = 0; i < colorModel.getNumComponents(); i++) { assertEquals(8, colorModel.getComponentSize(i)); } }
if (!cm.hasAlpha() && cm.getNumColorComponents() != 2) {
@Test public void testGetColorModelGIF() { URL resource = getClass().getResource("/tux.gif"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); ColorModel colorModel = factory.getColorModel(); assertNotNull(colorModel); assertEquals(3, colorModel.getNumColorComponents()); assertEquals(ColorSpace.getInstance(ColorSpace.CS_sRGB), colorModel.getColorSpace()); assertTrue(colorModel instanceof IndexColorModel); assertTrue(colorModel.hasAlpha()); assertEquals(4, colorModel.getNumComponents()); assertTrue(((IndexColorModel) colorModel).getTransparentPixel() >= 0); assertEquals(Transparency.BITMASK, colorModel.getTransparency()); for (int i = 0; i < colorModel.getNumComponents(); i++) { assertEquals(8, colorModel.getComponentSize(i)); } }
+ " is not supported, cannot perform color blending on it"); } else if (cm instanceof ComponentColorModel && cm.getNumColorComponents() == 3) { accessor = new ByteRgbAccessor(raster, cm.hasAlpha()); } else {
@Test public void testGray() { ImageTypeSpecifier spec = UInt32ImageTypeSpecifier.createInterleaved(GRAY, new int [] {0}, false, false); assertEquals(1, spec.getNumBands()); assertEquals(1, spec.getNumComponents()); assertEquals(32, spec.getBitsPerBand(0)); assertThat(spec.getColorModel(), is(ComponentColorModel.class)); assertFalse(spec.getColorModel().hasAlpha()); assertFalse(spec.getColorModel().isAlphaPremultiplied()); assertEquals(1, spec.getColorModel().getNumComponents()); assertEquals(1, spec.getColorModel().getNumColorComponents()); assertThat(spec.getSampleModel(), is(PixelInterleavedSampleModel.class)); assertEquals(1, spec.getSampleModel().getNumBands()); assertEquals(1, spec.getSampleModel().getNumDataElements()); }
final int numColorBands = cm.getNumColorComponents(); final boolean hasAlpha = cm.hasAlpha();
@Test public void testGrayAlpha() { ImageTypeSpecifier spec = UInt32ImageTypeSpecifier.createInterleaved(GRAY, new int [] {0, 1}, true, false); assertEquals(2, spec.getNumBands()); assertEquals(2, spec.getNumComponents()); assertEquals(32, spec.getBitsPerBand(0)); assertEquals(32, spec.getBitsPerBand(1)); assertThat(spec.getColorModel(), is(ComponentColorModel.class)); assertTrue(spec.getColorModel().hasAlpha()); assertFalse(spec.getColorModel().isAlphaPremultiplied()); assertEquals(2, spec.getColorModel().getNumComponents()); assertEquals(1, spec.getColorModel().getNumColorComponents()); assertThat(spec.getSampleModel(), is(PixelInterleavedSampleModel.class)); assertEquals(2, spec.getSampleModel().getNumBands()); assertEquals(2, spec.getSampleModel().getNumDataElements()); }
@Test public void testRGB() { ImageTypeSpecifier spec = UInt32ImageTypeSpecifier.createInterleaved(sRGB, new int [] {0, 1, 2}, false, false); assertEquals(3, spec.getNumBands()); assertEquals(3, spec.getNumComponents()); assertEquals(32, spec.getBitsPerBand(0)); assertEquals(32, spec.getBitsPerBand(1)); assertEquals(32, spec.getBitsPerBand(2)); assertThat(spec.getColorModel(), is(ComponentColorModel.class)); assertFalse(spec.getColorModel().hasAlpha()); assertFalse(spec.getColorModel().isAlphaPremultiplied()); assertEquals(3, spec.getColorModel().getNumComponents()); assertEquals(3, spec.getColorModel().getNumColorComponents()); assertThat(spec.getSampleModel(), is(PixelInterleavedSampleModel.class)); assertEquals(3, spec.getSampleModel().getNumBands()); assertEquals(3, spec.getSampleModel().getNumDataElements()); }
.getRenderedImage(); imageWorker.retainBands(mosaic.getColorModel().getNumColorComponents()); imageWorker.addBand(maskedAlpha, false, true, null); } else {
@Test public void testRGBAlpha() { ImageTypeSpecifier spec = UInt32ImageTypeSpecifier.createInterleaved(sRGB, new int [] {0, 1, 2, 3}, true, false); assertEquals(4, spec.getNumBands()); assertEquals(4, spec.getNumComponents()); assertEquals(32, spec.getBitsPerBand(0)); assertEquals(32, spec.getBitsPerBand(1)); assertEquals(32, spec.getBitsPerBand(2)); assertEquals(32, spec.getBitsPerBand(3)); assertThat(spec.getColorModel(), is(ComponentColorModel.class)); assertTrue(spec.getColorModel().hasAlpha()); assertFalse(spec.getColorModel().isAlphaPremultiplied()); assertEquals(4, spec.getColorModel().getNumComponents()); assertEquals(3, spec.getColorModel().getNumColorComponents()); assertThat(spec.getSampleModel(), is(PixelInterleavedSampleModel.class)); assertEquals(4, spec.getSampleModel().getNumBands()); assertEquals(4, spec.getSampleModel().getNumDataElements()); }
@Test public void testCMYK() { ImageTypeSpecifier spec = UInt32ImageTypeSpecifier.createInterleaved(CMYK, new int [] {0, 1, 2, 3}, false, false); assertEquals(4, spec.getNumBands()); assertEquals(4, spec.getNumComponents()); assertEquals(32, spec.getBitsPerBand(0)); assertEquals(32, spec.getBitsPerBand(1)); assertEquals(32, spec.getBitsPerBand(2)); assertEquals(32, spec.getBitsPerBand(3)); assertThat(spec.getColorModel(), is(ComponentColorModel.class)); assertFalse(spec.getColorModel().hasAlpha()); assertFalse(spec.getColorModel().isAlphaPremultiplied()); assertEquals(4, spec.getColorModel().getNumComponents()); assertEquals(4, spec.getColorModel().getNumColorComponents()); assertThat(spec.getSampleModel(), is(PixelInterleavedSampleModel.class)); assertEquals(4, spec.getSampleModel().getNumBands()); assertEquals(4, spec.getSampleModel().getNumDataElements()); }
@Test public void testRGBAlphaPre() { ImageTypeSpecifier spec = UInt32ImageTypeSpecifier.createInterleaved(sRGB, new int [] {0, 1, 2, 3}, true, true); assertEquals(4, spec.getNumBands()); assertEquals(4, spec.getNumComponents()); assertEquals(32, spec.getBitsPerBand(0)); assertEquals(32, spec.getBitsPerBand(1)); assertEquals(32, spec.getBitsPerBand(2)); assertEquals(32, spec.getBitsPerBand(3)); assertThat(spec.getColorModel(), is(ComponentColorModel.class)); assertTrue(spec.getColorModel().hasAlpha()); assertTrue(spec.getColorModel().isAlphaPremultiplied()); assertEquals(4, spec.getColorModel().getNumComponents()); assertEquals(3, spec.getColorModel().getNumColorComponents()); assertThat(spec.getSampleModel(), is(PixelInterleavedSampleModel.class)); assertEquals(4, spec.getSampleModel().getNumBands()); assertEquals(4, spec.getSampleModel().getNumDataElements()); }
@Test public void testCMYKAlpha() { ImageTypeSpecifier spec = UInt32ImageTypeSpecifier.createInterleaved(CMYK, new int [] {0, 1, 2, 3, 4}, true, false); assertEquals(5, spec.getNumBands()); assertEquals(5, spec.getNumComponents()); assertEquals(32, spec.getBitsPerBand(0)); assertEquals(32, spec.getBitsPerBand(1)); assertEquals(32, spec.getBitsPerBand(2)); assertEquals(32, spec.getBitsPerBand(3)); assertEquals(32, spec.getBitsPerBand(4)); assertThat(spec.getColorModel(), is(ComponentColorModel.class)); assertTrue(spec.getColorModel().hasAlpha()); assertFalse(spec.getColorModel().isAlphaPremultiplied()); assertEquals(5, spec.getColorModel().getNumComponents()); assertEquals(4, spec.getColorModel().getNumColorComponents()); assertThat(spec.getSampleModel(), is(PixelInterleavedSampleModel.class)); assertEquals(5, spec.getSampleModel().getNumBands()); assertEquals(5, spec.getSampleModel().getNumDataElements()); }