解决方案 »

  1.   

    for (int m = 0; m < colors.length; m++) {
    int b = (piex[m * 4] & 0xFF);
    int g = (piex[m * 4 + 1] & 0xFF);
    int r = (piex[m * 4 + 2] & 0xFF);
    int a = (piex[m * 4 + 3] & 0xFF);
    colors[m] = (a << 24) + (r << 16) + (g << 8) + b;
    }
      

  2.   

    获取宽高的方式不太好,最好不要这么做,java层display的信息,不一定等同于framebuffer的。
      

  3.   

    if (m % 4 == 0) {
                        int r = (piex[m] & 0xFF);
                        int g = (piex[m + 1] & 0xFF);
                        int b = (piex[m + 2] & 0xFF);
                        int a = (piex[m + 3] & 0xFF);
                        colors[m / 4] = (a << 24) + (b << 16) + (g << 8) + r;
                    }你确定frambuffer中数据的排列是rgba?不是bgar的排列?
      

  4.   

    不同平台的frambuffer的颜色格式不一样,有的是RGBA,有的是BGRA.