I need a bit help with Java’s ImageIO API. I seem to be lost in ComponentColorModel class. I need to check *.png file pixel by pixel to detect, whether it’s greyscale or color image. However, I can’t figure out how to obtain R, G, B values for each pixel. Can anyone help?
Following code throws IllegalArgumentException as it step on line “m.getComponents(i, components, 0);”
ComponentColorModel m = (ComponentColorModel) imageTypeSpecifier.getColorModel();
int pixels = reader.getWidth(0) * reader.getHeight(0);
isGray = true;
int[] components = new int[4];
for (int i = 0; i < pixels; i++) {
m.getComponents(i, components, 0);
if (!(components[0] != components[1] || components[1] != components[2])) {
isGray = false;
break;
}
}
My own solution: