Java - 二进制图像像素索引

时间:2012-02-28 15:40:24

标签: java image-processing

如何判断我生成的二进制图像是0索引还是1索引?

我制作了一个程序,它读入图像,生成二进制图像并在图像上执行其他一些功能。但是,我想知道如何判断二进制图像中的像素值是哪个“索引”?

这是怎么做到的?

是否有一个简单的内置函数(例如image.getRGB();)可以调用它来确定它?

1 个答案:

答案 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)