BufferImage: Как точно определить цвет пикселя - PullRequest
2 голосов
/ 22 апреля 2011

У меня есть растровое изображение, закодированное в формате PNG.Как точно определить, где черный, а где белый?

            final int[] p = new int[1];
            int iter = 0;
            for (int i = 0; i < image.getWidth(); i++) {
                for (int j = 0; j < image.getHeight(); i++) {
                    pixels[iter] = image.getData().getPixel(i, j, p)[0];
                    iter++;
                }
            }

всегда возвращает мне 1 на пиксель.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2011
BufferedImage image = ImageIO.read(file);
// Getting pixel color by position x=100 and y=40 
int clr=  image.getRGB(100,40); 
int  red   = (clr & 0x00ff0000) >> 16;
int  green = (clr & 0x0000ff00) >> 8;
int  blue  =  clr & 0x000000ff;

красный, зеленый и синий будут значениями RGB пикселей при x = 100 и y = 40

0 голосов
/ 22 апреля 2011

В зависимости от того, как закодировано ваше изображение, пиксели упаковываются в одно целое число, например, Sa BufferedImage.TYPE_4BYTE_ABGR старший байт - альфа, затем синий, зеленый, а затем красный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...