M, работающий над некоторой программой обработки изображений, и столкнулся с проблемой отображения изображения в оттенках серого. Я сделал это, я извлек значения пикселей, используя getRGB, а затем попытался изменить эти значения пикселей. Но после изменения значения этого пикселя я все еще получаю тот же образ, который был ранее буферизирован. Моя часть кода приведен ниже: -Как отобразить greycale изображение в java после использования setRGB?
int [] rgbArray=new int[width*height];
BufferedImage buffer = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
buffer = ImageIO.read(new File(file));
//Before changing the pixel values
buffer.getRGB(0, 0, width, height, rgbArray , 0,width);
int a = (0xff000000 & rgbArray[0]) >>> 24;
int r = (0x00ff0000 & rgbArray[0]) >> 16;
int g = (0x0000ff00 & rgbArray[0]) >> 8;
int b = (0x000000ff & rgbArray[0]);
System.out.println("a " + a + " r " + r + " g " + g + " b " + b);
System.out.println("rgbArray["+0+"] = "+ rgbArray[0]);
for(int i = 0 ; i<width*height; i++)
{
rgbArray[0]=0x808080; //Changing pixel values to grey
}
buffer.setRGB(0, 0, width, height, rgbArray , 0,width);
//After changing the pixel values
buffer.getRGB(0, 0, width, height, rgbArray , 0,width);
a = (0xff000000 & rgbArray[0]) >>> 24;
r = (0x00ff0000 & rgbArray[0]) >> 16;
g = (0x0000ff00 & rgbArray[0]) >> 8;
b = (0x000000ff & rgbArray[0]);
System.out.println("a " + a + " r " + r + " g " + g + " b " + b);
System.out.println("rgbArray["+0+"] = "+ rgbArray[0]);
выход для значения пикселя выходит, чтобы быть правильным для обоих исходных и новых пикселей, но я не в состоянии увидеть новый образ, он показывает старый т.е. исходное изображение отображается не измененным изображением.
Для лучшей помощи в ближайшее время отправьте сообщение [SSCCE] (http://sscce.org/). –
Вы выделяете большой «BufferedImage» в строке 2, но затем отбрасываете его и заменяете его вызовом 'ImageIO.read()'. Ради памяти, вероятно, не хочу этого делать. –
yup thax ... но как я могу отобразить этот измененный пиксель как изображение? – Arizvi