public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) { if (!(destCM instanceof IndexColorModel) || ((IndexColorModel) destCM).getTransparency() == Transparency.TRANSLUCENT) return null; return new BufferedImage( src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, (IndexColorModel) destCM); }
public BufferedImage filter(BufferedImage src, BufferedImage dest) { if (dest == null) dest = new BufferedImage( src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, icm); else { if (!(dest.getColorModel() instanceof IndexColorModel) || ((IndexColorModel) dest.getColorModel()).getTransparency() != this.transparencyIndex) throw new IllegalArgumentException(); if (((IndexColorModel) dest.getColorModel()).getTransparentPixel() != this.transparencyIndex) throw new IllegalArgumentException(); } final WritableRaster wr = dest.getRaster(); final Raster ir = src.getRaster(); this.rasterOp.filter(ir, wr); return dest; }
if (icm.getTransparency() == Transparency.OPAQUE && trasparentIdx == -1) { if (icm.getTransparency() == Transparency.OPAQUE && trasparentIdx != -1) { reds[trasparentIdx] = (byte) bg.getRed(); greens[trasparentIdx] = (byte) bg.getGreen();
public MutableIndexColorModel(final IndexColorModel base) { super(base.getPixelSize(), base.getComponentSize(), base.getColorSpace(), base.hasAlpha(), base.isAlphaPremultiplied(), base.getTransparency(), base.getTransferType()); this.rgbs = getRGBs(base); }
int trans = icm.getTransparency() == Transparency.BITMASK ? BMHDChunk.MASK_TRANSPARENT_COLOR : BMHDChunk.MASK_NONE; int transPixel = icm.getTransparency() == Transparency.BITMASK ? icm.getTransparentPixel() : 0; header = new BMHDChunk(pImage.getWidth(), pImage.getHeight(), icm.getPixelSize(), trans, compression, transPixel);
/** * Used to define a cube of the color space. The cube can be split * approximately in half to generate two cubes. */ private static class Cube { int[] min = {0, 0, 0}; int[] max = {255, 255, 255}; boolean done = false; List<Counter>[] colors = null; int count = 0; static final int RED = 0; static final int GRN = 1; static final int BLU = 2; /** * Define a new cube. * * @param colors contains the 3D color histogram to be subdivided * @param count the total number of pixels in the 3D histogram. */ public Cube(List<Counter>[] colors, int count) { this.colors = colors; this.count = count; } /** * If this returns true then the cube can not be subdivided any * further * * @return true if cube can not be subdivided any further
int transparency = cm.getTransparency(); int transparencyIndex = cm.getTransparentPixel(); final int mapSize = cm.getMapSize();
public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) { if (!(destCM instanceof IndexColorModel) || ((IndexColorModel) destCM).getTransparency() == Transparency.TRANSLUCENT) return null; return new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, (IndexColorModel) destCM); }
public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) { if (!(destCM instanceof IndexColorModel) || ((IndexColorModel) destCM).getTransparency() == Transparency.TRANSLUCENT) return null; return new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, (IndexColorModel) destCM); }
private static String paletteRepresentation(IndexColorModel indexColorModel) { final StringBuilder builder = new StringBuilder(); final int mapSize = indexColorModel.getMapSize(); builder.append("PaletteSize:").append(mapSize).append("\n"); builder.append("Transparency:").append(indexColorModel.getTransparency()).append("\n"); builder.append("TransparentPixel:") .append(indexColorModel.getTransparentPixel()) .append("\n"); for (int i = 0; i < mapSize; i++) { builder.append("[r=").append(indexColorModel.getRed(i)).append(","); builder.append("[g=").append(indexColorModel.getGreen(i)).append(","); builder.append("[b=").append(indexColorModel.getBlue(i)).append("]\n"); } return builder.toString(); }
public BufferedImage filter(BufferedImage src, BufferedImage dest) { if (dest == null) dest = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, icm); else { if (!(dest.getColorModel() instanceof IndexColorModel) || ((IndexColorModel) dest.getColorModel()) .getTransparency() != this.transparencyIndex) throw new IllegalArgumentException(); if (((IndexColorModel) dest.getColorModel()).getTransparentPixel() != this.transparencyIndex) throw new IllegalArgumentException(); } final WritableRaster wr = dest.getRaster(); final Raster ir = src.getRaster(); this.rasterOp.filter(ir, wr); return dest; }
public BufferedImage filter(BufferedImage src, BufferedImage dest) { if (dest == null) dest = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, icm); else { if (!(dest.getColorModel() instanceof IndexColorModel) || ((IndexColorModel) dest.getColorModel()) .getTransparency() != this.transparencyIndex) throw new IllegalArgumentException(); if (((IndexColorModel) dest.getColorModel()).getTransparentPixel() != this.transparencyIndex) throw new IllegalArgumentException(); } final WritableRaster wr = dest.getRaster(); final Raster ir = src.getRaster(); this.rasterOp.filter(ir, wr); return dest; }
Color oneColor = Color.blue; Color anotherColor = Color.red; byte[] redMap = {(byte) (oneColor.getRed()), (byte) (anotherColor.getRed())}; byte[] greenMap = {(byte) (oneColor.getGreen()), (byte) (anotherColor.getGreen())}; byte[] blueMap = {(byte) (oneColor.getBlue()), (byte) (anotherColor.getBlue())}; IndexColorModel colorModel = new IndexColorModel(1, 2, redMap, greenMap, blueMap, 0); int transparency = colorModel.getTransparency(); int transparentPixel = colorModel.getTransparentPixel(); System.out.println("colorModel.getTransparency(): " + transparency); System.out.println("colorModel.getTransparentPixel(): " + transparentPixel); BufferedImage bufferedImage = new BufferedImage(300, 300, BufferedImage.TYPE_BYTE_INDEXED, colorModel); WritableRaster writableRaster = bufferedImage.getRaster(); for (int x = 0; x < 300; x++) { for (int y = 0; y < 300; y++) { int[] fill = new int[1]; // A large block... Arrays.fill(fill, (x < y) ? 0 : 1); // .. filled with one of the 7 first colors in the LUT. writableRaster.setSamples(x, y, 1, 1, 0, fill); } }
final int pixelSize = oldCM.getPixelSize(); transparent &= (1 << pixelSize) - 1; forceBitmask = !translucent && oldCM.getTransparency() == Transparency.TRANSLUCENT; if (forceBitmask || oldCM.getTransparentPixel() != transparent) { final int mapSize = Math.max(oldCM.getMapSize(), transparent + 1);
if (cm instanceof IndexColorModel) { final IndexColorModel oldCM = (IndexColorModel) cm; switch (oldCM.getTransparency()) { case Transparency.OPAQUE:
public MutableIndexColorModel(final IndexColorModel base) { super(base.getPixelSize(), base.getComponentSize(), base.getColorSpace(), base.hasAlpha(), base.isAlphaPremultiplied(), base.getTransparency(), base.getTransferType()); this.rgbs = getRGBs(base); }
@Test public void testPng8Translucent() throws Exception { MockHttpServletResponse response = getAsServletResponse( "wms?bbox=" + bbox + "&styles=&layers=" + layers + "&Format=image/png8" + "&request=GetMap" + "&width=550" + "&height=250" + "&srs=EPSG:4326&transparent=true"); assertEquals("image/png; mode=8bit", response.getContentType()); InputStream is = getBinaryInputStream(response); BufferedImage bi = ImageIO.read(is); IndexColorModel cm = (IndexColorModel) bi.getColorModel(); assertEquals(Transparency.TRANSLUCENT, cm.getTransparency()); } }
@Test public void testPng8Translucent() throws Exception { MockHttpServletResponse response = getAsServletResponse( "wms?bbox=" + bbox + "&styles=&layers=" + layers + "&Format=image/png8" + "&request=GetMap" + "&width=550" + "&height=250" + "&srs=EPSG:4326&transparent=true"); assertEquals("image/png; mode=8bit", response.getContentType()); assertEquals("inline; filename=sf-states.png", response.getHeader("Content-Disposition")); InputStream is = getBinaryInputStream(response); BufferedImage bi = ImageIO.read(is); IndexColorModel cm = (IndexColorModel) bi.getColorModel(); assertEquals(Transparency.TRANSLUCENT, cm.getTransparency()); }
@Test public void testPng8ForceBitmask() throws Exception { MockHttpServletResponse response = getAsServletResponse( "wms?bbox=" + bbox + "&styles=&layers=" + layers + "&Format=image/png8" + "&request=GetMap" + "&width=550" + "&height=250" + "&srs=EPSG:4326&transparent=true&format_options=quantizer:octree"); assertEquals("image/png; mode=8bit", response.getContentType()); InputStream is = getBinaryInputStream(response); BufferedImage bi = ImageIO.read(is); IndexColorModel cm = (IndexColorModel) bi.getColorModel(); assertEquals(Transparency.BITMASK, cm.getTransparency()); assertTrue(cm.getTransparentPixel() >= 0); }
@Test public void testPng8Opaque() throws Exception { MockHttpServletResponse response = getAsServletResponse( "wms?bbox=" + bbox + "&styles=&layers=" + layers + "&Format=image/png8" + "&request=GetMap" + "&width=550" + "&height=250" + "&srs=EPSG:4326"); assertEquals("image/png; mode=8bit", response.getContentType()); InputStream is = getBinaryInputStream(response); BufferedImage bi = ImageIO.read(is); IndexColorModel cm = (IndexColorModel) bi.getColorModel(); assertEquals(Transparency.OPAQUE, cm.getTransparency()); assertEquals(-1, cm.getTransparentPixel()); }