我想获得我所拥有的位图的像素列表。
我在屏幕上显示了位图,但出于某种原因,每次我尝试获取像素列表时,数组始终为0。
我不确定为什么。 几天来,我一直在寻找和尝试不同的答案。 数组的长度在那里,它不是null。所以我不确定为什么这不起作用。
lbUpVoteUndo
答案 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中的输出可能太多,可以删除早期输出。