2014-03-12 31 views
1

我想修改我從Android中的庫中採取它的圖像。爲了修改我需要獲取圖像的像素值。如何獲取在0-255範圍內的圖像的像素值android

我不想將像素值區分爲R,G,B值。我想要的像素值作爲單個值

       for (x = 0; x < w; x++){ 
       for (y = 0;y < w; y++){ 
       int pixels = bmpimg1.getPixel(x, y); 
       int alphavalue=Color.alpha(pixels); 
       int redValue = Color.red(pixels); 
       int blueValue = Color.blue(pixels); 
       int greenValue = Color.green(pixels); 
       totalvalue[x][y]=(redvalue+bluevalue+greenvalue)/3 
         } 
         } 

//總價值=假設另外redvalue,bluevalue,greenvalue和取平均會給我在該位置的像素值//

當我嘗試使用totalvalue重新創建圖像,我沒有得到我輸入的圖像。

我在使用Raster.getpixels的java中做了同樣的事情,當我嘗試創建相同的圖像時,我能夠獲得相同的圖像。

   Bufferedimage img=ImageIO.read(new File("a.jpg"); 
       Raster raster=img.getData(); 
       for (int x=0;x<w;x++) 
     { 
      for(int y=0;y<h;y++) 
      { 
       pixels[x][y]=raster.getSample(x,y,0); 
       pixel[count++]=pixels[x][y]; 
      } 
     } 

當我創建使用的BufferedImage與像素[X] [Y]一個新的形象,我得到原始圖像

但在安卓和GetPixel給出負數

所以值我怎樣才能得到0-255範圍內的每個像素的值,而不分離成RGB值。

請幫我解決這個問題。謝謝

+0

'我怎樣才能得到每個像素的值範圍0-255沒有分離成RGB值... ...所以你使用的是灰度圖像(其中A = R = G = B)。或者你想要一個顏色分量的平均值((A + R + G + B)/ 4)? –

+1

謝謝Vyger的幫助,我得到了它的工作我用A = R = G = B來找到灰色圖像。 – user2109988

回答

1

由於所有的紅色,藍色和綠色組件可以取值高達255,你不能總結他們得到一個單一的顏色值(例如1 + 2 + 3 = 2 + 3 + 1)

你將不得不顏色值的數量大於255存儲與方法

color = redValue*2^16 + greenValue*2^8 + blueValue 

你應該能夠找出如何檢索紅藍綠從這個獨特的價值

祝你好運