public ComponentColorModel createComponentColorModel() { final ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); ComponentColorModel cm; if (getColorComponentCount() == 4) { cm = new ComponentColorModel(cs, true, // hasAlpha, false, //isAlphaPremultiplied, Transparency.TRANSLUCENT, // transparency, DataBuffer.TYPE_BYTE); //transferType } else { cm = new ComponentColorModel(cs, false, // hasAlpha, false, //isAlphaPremultiplied, Transparency.OPAQUE, // transparency, DataBuffer.TYPE_BYTE); //transferType } return cm; }
private static BufferedImage createBufferedImage(ImageInfo imageInfo, int width, int height, byte[] rgbSamples) { final ComponentColorModel cm = imageInfo.createComponentColorModel(); final DataBuffer db = new DataBufferByte(rgbSamples, rgbSamples.length); final int colorComponentCount = imageInfo.getColorComponentCount(); final WritableRaster wr = Raster.createInterleavedRaster(db, width, height, colorComponentCount * width, colorComponentCount, colorComponentCount == 4 ? RGBA_BAND_OFFSETS : RGB_BAND_OFFSETS, null ); return new BufferedImage(cm, wr, false, null); }
public void testImageInfo3Bands() { final RGBChannelDef rgbcd = new RGBChannelDef(new String[]{ "radiance_13", "radiance_5", "radiance_2" }); ImageInfo imageInfo = new ImageInfo(rgbcd); assertEquals(null, imageInfo.getColorPaletteDef()); assertSame(rgbcd, imageInfo.getRgbChannelDef()); assertEquals(4, imageInfo.getColorComponentCount()); imageInfo.setNoDataColor(Color.RED); assertEquals(Color.RED, imageInfo.getNoDataColor()); assertEquals(3, imageInfo.getColorComponentCount()); imageInfo.setHistogramMatching(ImageInfo.HistogramMatching.Normalize); assertEquals(ImageInfo.HistogramMatching.Normalize, imageInfo.getHistogramMatching()); final RGBChannelDef rgbcdAlpha = new RGBChannelDef(new String[]{ "radiance_13", "radiance_5", "radiance_2", "50.0" }); imageInfo = new ImageInfo(rgbcdAlpha); assertEquals(4, imageInfo.getColorComponentCount()); imageInfo.setNoDataColor(Color.RED); assertEquals(4, imageInfo.getColorComponentCount()); } }
final int numColorComponents = imageInfo.getColorComponentCount(); final int numPixels = width * height; final byte[] rgbSamples = new byte[numColorComponents * numPixels];
public void testImageInfo1Band() { final ColorPaletteDef cpd = new ColorPaletteDef(new ColorPaletteDef.Point[]{ new ColorPaletteDef.Point(100, Color.ORANGE), new ColorPaletteDef.Point(200, Color.MAGENTA), new ColorPaletteDef.Point(500, Color.BLUE), new ColorPaletteDef.Point(600, Color.WHITE) }); ImageInfo imageInfo = new ImageInfo(cpd); assertSame(cpd, imageInfo.getColorPaletteDef()); assertEquals(null, imageInfo.getRgbChannelDef()); assertEquals(4, imageInfo.getColorComponentCount()); assertEquals(ImageInfo.NO_COLOR, imageInfo.getNoDataColor()); assertEquals(ImageInfo.HistogramMatching.None, imageInfo.getHistogramMatching()); assertNotNull(imageInfo.getColors()); assertEquals(4, imageInfo.getColors().length); assertEquals(Color.ORANGE, imageInfo.getColors()[0]); assertEquals(Color.MAGENTA, imageInfo.getColors()[1]); assertEquals(Color.BLUE, imageInfo.getColors()[2]); assertEquals(Color.WHITE, imageInfo.getColors()[3]); imageInfo.setNoDataColor(Color.RED); assertEquals(Color.RED, imageInfo.getNoDataColor()); assertEquals(3, imageInfo.getColorComponentCount()); imageInfo.setHistogramMatching(ImageInfo.HistogramMatching.Equalize); assertEquals(ImageInfo.HistogramMatching.Equalize, imageInfo.getHistogramMatching()); }
final int height = raster.getSceneRasterHeight(); final int numPixels = width * height; final int numColorComponents = imageInfo.getColorComponentCount(); final byte[] rgbSamples = new byte[numColorComponents * numPixels]; final double minSample = imageInfo.getColorPaletteDef().getMinDisplaySample();