M работает над некоторой программой обработки изображений и столкнулся с проблемой отображения изображения в оттенках серого.Что я сделал, я извлек значения пикселей с помощью getRGB, а затем попытался изменить эти значения пикселей.Но после изменения этих значений я получаю то же изображение, которое было буферизовано ранее.Моя часть кода приведена ниже: -
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]);
Вывод значения пикселя получается корректным как для исходного, так и для нового пикселя, но я не могу просмотреть новое изображение, оно показываетстарое, т. е. исходное изображение отображается не измененным.