在Android中获取Bitmap的所有像素

时间:2017-06-16 15:28:11

标签: java android android-canvas android-drawable android-bitmap

我想获得我所拥有的位图的像素列表。

我在屏幕上显示了位图,但出于某种原因,每次我尝试获取像素列表时,数组始终为0。

我不确定为什么。 几天来,我一直在寻找和尝试不同的答案。 数组的长度在那里,它不是null。所以我不确定为什么这不起作用。

lbUpVoteUndo

1 个答案:

答案 0 :(得分:3)

我想这是因为你使用了错误的方法。通过做:

line = Bitmap.createBitmap(line.getWidth(), line.getHeight(), Bitmap.Config.ARGB_8888);

您只需创建一个新的空位图。但是你必须给出一个源位图,比如这个方法:

line = createBitmap(line, 0, 0, line.getWidth(), line.getHeight());

此外,您应该确保使用方法decodeFromResource()创建位图。只需放一个检查宽度和高度的日志,如下所示:

Log.d("BITMAP","WIDTH:"+line.getWidth()+" HEIGHT:"+line.getHeight);

如果有宽度和高度,那么你知道创建是成功的。

修改

你的下一个问题是:

pixelAmount = new int[line.getHeight()*line.getRowBytes()];

必须是:

pixelAmount = new int[line.getHeight()*line.getWidth()];

并检查它:

for(int i=0;i<pixelAmount.length;i++){

int pixel = pixelAmount[i];
if(pixel!=0){
Log.d("BITMAP","PIXELS:"+pixel[i]);
}

}

如果尺寸很大,Android Monitor中的输出可能太多,可以删除早期输出。