如何判断我生成的二进制图像是0索引还是1索引?
我制作了一个程序,它读入图像,生成二进制图像并在图像上执行其他一些功能。但是,我想知道如何判断二进制图像中的像素值是哪个“索引”?
这是怎么做到的?
是否有一个简单的内置函数(例如image.getRGB();
)可以调用它来确定它?
答案 0 :(得分:2)
我不知道你对0或1索引的意思,但这里有一些事实。
BufferedImage
是一般图像,因此像素从坐标(0,0)
如果你想要一个数组来处理,来自这个图像,左上角将在索引0中(除非另有说明)
image.getRGB(0, 0, image.getWidth(), image.getHeight(), array, 0, image.getWidth());
BufferedImage
本身不支持1个BPP图像,但是通过带有Colormodel的 Packed 模式或2索引调色板。没有例子,我不知道你有哪一个。
无论内部格式如何,不同的getRGB()方法应始终为每个像素返回一个值,每个值返回一个像素。请注意,完全不透明度值(0xFF000000,-16777216)也将包含在结果中。
例如
BufferedImage image = new BufferedImage(16, 16, BufferedImage.TYPE_BYTE_BINARY);
image.setRGB(0, 0, 0xFFFFFFFF);
image.setRGB(1, 0, 0xFF000000);
image.setRGB(0, 1, 0xFF000000);
image.setRGB(1, 1, 0xFFFFFFFF);
System.out.println(image.getRGB(0, 0));
System.out.println(image.getRGB(1, 0));
System.out.println(image.getRGB(0, 1));
System.out.println(image.getRGB(1, 1));
int[] array = image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth());
System.out.println(array[0]); // at (0,0)
System.out.println(array[1]); // at (1,0)
System.out.println(array[16]); // at (0,1)
System.out.println(array[17]); // at (1,1)