BufferedImage - получение значения пикселя в изображении цветовой модели в градациях серого

У меня есть BufferedImage, преобразованный в оттенки серого с помощью этого кода. Обычно я получаю значения пикселей с помощью BufferedImage.getRGB(i,j) и горю каждого значения для R, G и B. Но как мне получить значение пикселя в изображении в градациях серого?

РЕДАКТИРОВАТЬ: извините, забыл о преобразовании.

static BufferedImage toGray(BufferedImage origPic) {
    BufferedImage pic = new BufferedImage(origPic.getWidth(), origPic.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
    Graphics g = pic.getGraphics();
    g.drawImage(origPic, 0, 0, null);
    g.dispose();
    return pic;
}

person Kajzer    schedule 12.04.2013    source источник
comment
Можете ли вы опубликовать код, который вы использовали для его преобразования?   -  person Sri Harsha Chilakapati    schedule 12.04.2013
comment
используя этот код. где код?   -  person Alya'a Gamal    schedule 12.04.2013


Ответы (1)


если у вас есть изображение RGB, вы можете получить такие значения (Red, green, blue, Gray):

BufferedImage img;//////read the image
int rgb = img.getRGB(x, y);
int r = (rgb >> 16) & 0xFF;
int g = (rgb >> 8) & 0xFF;
int b = (rgb & 0xFF);

а серый — это среднее значение для (r, g, b), например:

int gray = (r + g + b) / 3;

но если вы преобразуете изображение RGB (24 бита) в серое изображение (8 бит):

int gray= img.getRGB(x, y)& 0xFF;/////////will be the gray value
person Alya'a Gamal    schedule 12.04.2013
comment
Заинтересованы в том, чтобы узнать, как получить альфа-значение пикселя - person Sri Harsha Chilakapati; 12.04.2013
comment
@SriHarshaChilakapati альфа (rgb ›› 24) и 0xFF - person Kajzer; 12.04.2013
comment
Эй, Аля, теперь, когда у меня есть это, как я могу создать RGB с новым значением серого? - person Kajzer; 12.04.2013
comment
невозможно получить RGB из серого изображения, потому что у вас нет информации для этого, чтобы получить серый цвет, поэтому вы будете использовать 3 значения для его получения (R, G, B) после того, как вы получите серый, вы потеряете значения Информация - person Alya'a Gamal; 12.04.2013
comment
Прочитайте эти ответы stackoverflow.com/questions/11226074/ и выполнить поиск в Google, чтобы понять, почему вы не можете выполнить это преобразование, или, по крайней мере, вернуть цветное изображение как у тебя есть - person Alya'a Gamal; 12.04.2013
comment
Есть ли другой способ установить новое значение пикселя в изображении в оттенках серого? - person Kajzer; 12.04.2013
comment
что ты имеешь в виду?? вам нужно вернуть серое изображение??!! - person Alya'a Gamal; 12.04.2013
comment
Да, мне нужно было вернуть серое изображение. Чтобы установить новый RGB, я просто использовал одно и то же значение для КРАСНОГО, ЗЕЛЕНОГО и СИНЕГО при создании нового RGB. Работал нормально. - person Kajzer; 17.04.2013