Of course.
Here is a proc that converts a binary image to a compatible RGB:
[code]
  public static BufferedImage 
convertToSinglePixelPackedSampleModel_BINARY(BufferedImage image) {
    int[] bitMasks = new int[]{0x00ff0000, 0x0000ff00, 0x000000ff};
    SinglePixelPackedSampleModel sampleModel = new 
SinglePixelPackedSampleModel(DataBuffer.TYPE_INT, image.getWidth(),
            image.getHeight(), bitMasks);
    int[] pixels = image.getRaster().getPixels(0, 0, image.getWidth(), 
image.getHeight(), (int [])null);

    for(int i=0; i<pixels.length; i++)
      if (pixels[i] == 1)
        pixels[i] = 0x00ffffff;

    DataBufferInt d = new DataBufferInt(pixels, pixels.length);
    WritableRaster destRaster = Raster.createWritableRaster(sampleModel, d, 
null);

    ICC_ColorSpace colorSpace = new 
ICC_ColorSpace(ICC_Profile.getInstance(ColorSpace.CS_sRGB));
    ColorModel colorModel = new DirectColorModel(colorSpace, 24, bitMasks[0], 
bitMasks[1], bitMasks[2], 0, false, DataBuffer.TYPE_INT);
    image = new BufferedImage(colorModel, destRaster, false, null);
    return image;
  }
[/code]

Now, here is the code that converts to compatible image:
[code]
   public static BufferedImage toCompatibleImage(final BufferedImage image) {
     long now = System.currentTimeMillis();
     final BufferedImage compatible = GraphicsEnvironment
             .getLocalGraphicsEnvironment()
             .getDefaultScreenDevice()
             .getDefaultConfiguration()
             .createCompatibleImage(image.getWidth(), image.getHeight(), 
image.getTransparency());
    ColorConvertOp op = new 
ColorConvertOp(image.getColorModel().getColorSpace(), 
compatible.getColorModel().getColorSpace(), null);
    op.filter(image, compatible);
    return compatible;
  }
[/code]

If i take a binary image and convert it to RGB (first method), the 
BufferedImage i get is faster to render (of course), but still at least 4 times 
slower to render than in the case that i later convert to compatible image also.

The image before and after the conversion to compatible are identical.
What do i miss here?

Thank you,
Costas
[Message sent by forum member 'csterg' (csterg)]

http://forums.java.net/jive/thread.jspa?messageID=349437

===========================================================================
To unsubscribe, send email to lists...@java.sun.com and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
lists...@java.sun.com and include in the body of the message "help".

Reply via email to