在android中获取位图像素阵列的最佳方法?

在android中获取位图像素阵列的最佳方法?,android,arrays,image-processing,bitmap,Android,Arrays,Image Processing,Bitmap,我是Android新手,需要处理位图,通过仅收集黑色像素,即R=0、G=0和B=0,将像素信息提取到多维数组中。我注意到有一个GetPixel(x,y)方法显然很慢,我需要类似的东西。但是我不知道如何使用GetPixels()中的信息实现更好的GetPixel(x,y)方法。我目前正在尝试类似的方法: private static int[][] GetPixels(Bitmap bmp) { int height = bmp.getHeight(); int width = b

我是Android新手,需要处理位图,通过仅收集黑色像素,即R=0、G=0和B=0,将像素信息提取到多维数组中。我注意到有一个
GetPixel(x,y)
方法显然很慢,我需要类似的东西。但是我不知道如何使用GetPixels()中的信息实现更好的
GetPixel(x,y)
方法。我目前正在尝试类似的方法:

private static int[][] GetPixels(Bitmap bmp)
{
    int height = bmp.getHeight();
    int width = bmp.getWidth();
    int length = width * height;
    int[] pixels = new int[length];
    bmp.getPixels(pixels, 0, 0, 0, 0, width, height);
    int[][]result = new int[width][height];
    for(int pixel = 0, x = 0, y = 0; pixel < pixels.length; pixel += 4)
    {
        int argb = pixels[pixel];//how to access pixel information?
        result[x][y] = argb;//store only black pixels??
        x++;
        if(y == width)
        {
            x = 0;
            y++;
        }
    }
    return result;
}
private static int[]GetPixels(位图bmp)
{
int height=bmp.getHeight();
int width=bmp.getWidth();
整数长度=宽度*高度;
int[]像素=新的int[长度];
getPixels(像素,0,0,0,0,宽度,高度);
int[][]结果=新int[宽度][高度];
对于(int pixel=0,x=0,y=0;pixel
你说的有点不对。它在第二个参数处需要宽度变量。我使用位图库中的getpixels(),速度很好。最好不要担心优化,直到你需要它。也许为了提高速度,您可以使用原始YUV数据,而不是转换为RGB。我用它来快速获取灰度。嗨@JamesBurnstone,你可以发布如何使用原始YUV数据。我真的搞不懂。谢谢。@JamesBurnstone:你说的原始YUV数据是什么意思?读取位图的像素与相机的图片有什么关系?你怎么知道OP需要亮度?对不起,我把这和需要相机输入而不仅仅是位图图像的人混淆了。显然没有yuv数据,我错了。