M正在處理某些圖像處理程序,並遇到顯示灰度圖像的問題。我做的是,我使用getRGB提取像素值,然後嘗試更改這些像素值。但改變這些像素值後,我仍然得到了以前緩衝的相同圖像。我的部分代碼如下給出: -如何在使用setRGB之後在java中顯示灰度圖像?
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/)。 – 2012-01-14 16:55:32
您正在第2行中分配一個大的'BufferedImage',但隨後將其拋棄並將其替換爲對ImageIO.read()的調用。爲了記憶,可能不想這樣做。 – 2012-01-14 17:08:41
yup thax ...但我怎麼能顯示這個變化的像素作爲圖像? – Arizvi 2012-01-14 17:39:03