2013-06-03 76 views
0

问题的getPixels我有以下代码...安卓:从位图

BitmapFactory.Options options = new BitmapFactory.Options(); 
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.test, options); 
int[] pixels = new int[1]; 
if(b != null){ 
    pixels = new int[b.getHeight()*b.getWidth()]; 
    b.getPixels(pixels, 0, b.getWidth(), 0, 0, b.getWidth(), b.getHeight()); 
    for(int i = 0 ; i < 100 ; i++){ 
    Log.d("test","Pixel is :"+pixels[i]); 
    } 
} 

R.drawable.test是在res /绘制-nodpi DIR

但不是.bmp文件0-255值我希望它看起来更像这个...

06-03 21:49:24.364: D/test(4088): Pixel is :-16777088 
06-03 21:49:24.364: D/test(4088): Pixel is :-16777088 
06-03 21:49:24.364: D/test(4088): Pixel is :-16777088 
06-03 21:49:24.364: D/test(4088): Pixel is :-16777088 
06-03 21:49:24.364: D/test(4088): Pixel is :-16777088 
06-03 21:49:24.364: D/test(4088): Pixel is :-16777088 
06-03 21:49:24.374: D/test(4088): Pixel is :-16777088 

这个数字看起来不正确可言,有人可以帮我,我缺少的是什么?

回答

3

您需要将您的像素转换为RGB

下面是一个代码示例

   int[] pix = new int[picw * pich]; 
      bitmap.getPixels(pix, 0, picw, 0, 0, picw, pich); 

      int R, G, B,Y; 

      for (int y = 0; y < pich; y++){ 

       for (int x = 0; x < picw; x++) 
        { 
        int index = y * picw + x; 
        int R = (pix[index] >> 16) & 0xff;  //bitwise shifting 
        int G = (pix[index] >> 8) & 0xff; 
        int B = pix[index] & 0xff; 

        //R,G.B - Red, Green, Blue 
        //to restore the values after RGB modification, use 
        //next statement 

        pix[index] = 0xff000000 | (R << 16) | (G << 8) | B; 

        } 
      } 
+0

怎么样一个PNG和添加α,这一变化为 – Jackie

+0

http://stackoverflow.com/questions/4845646/how-to-write-png-files-in-java-using-pixel-rgb-values-0-to-1 something like like this here here – varun