我需要对Java的ImageIO API有所帮助。我似乎迷失在ComponentColorModel类中。我需要逐个像素检查* .png文件来检测,无论是灰度还是彩色图像。但是,我不知道如何获得每个像素的R,G,B值。谁能帮忙?从ComponentColorModel获取RGB组件
以下代码将引发IllegalArgumentException,因为它在行“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;
}
}
这是行不通的。这些方法调用ComponentColorModel中的方法getRGBComponent(int pixel,int idx),并检查是否存在if(numComponents> 1){0}。 }' 在我的情况下,变量numComponents初始化值为3.因此,每次调用它时都会得到这个异常... –