So I've written a limited Java EPS creator for image files using
BufferedImage and Image I/O, but it's not perfect.

I need to determine if it's RGB, CMYK, or grayscale (including 1-bit
B&W), get the bits per component, collect the samples in per-pixel
sequence in a certain order (RGB not BGR), and write my EPS.  Oh, and
if there's an alpha channel, I need to get those values and handle
them specially.

Ascertaining type:

BufferedImage#getColorModel#getColorSpace#getType works for CMYK, but
for 1-bit B&W, it reports 8-bit RGB.  BufferedImage#getType works for
1-bit B&W (BufferedImage.TYPE_BYTE_BINARY), but not for CMYK
(BufferedImage.TYPE_CUSTOM).

So already, I'm forced to use a different strategy for different kinds
of images.  Do I have the right idea?

Accessing sample information with a ColorModel is easy.

final Object reusableDataArray = raster.getDataElements(x, y, null)
final int[] reusableSampleArray =
colorModel.getComponents(sampleArray, null, 0);
final int bitsPerComponent = colorModel.getComponentSize(0);

Accessing sample information from a Raster/SampleModel
(TYPE_BYTE_BINARY) isn't quite so easy.

BufferedImage#getType provides enough information to interpret the
output of Raster#getPixel, but that means I have to write new logic
for each #getType.

So right now, through trial and error I'm typing up a list of
BufferedImage.TYPE_*s that work well with ColorModel, and handling
them consistently.  For each types that don't work well with
ColorModel, I'm writing special logic to interpret Raster#getPixel.

Am I on the right track, or am I just making this hard for myself?

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to