getPixel()为PNG Bitmap提供0:Android

时间:2015-06-21 06:44:39

标签: android canvas bitmap png getpixel

我现在面临这个问题2天了。我正在通过Canvas制作一个2D游戏,它有一个PNG文件,我在画布上用drawBitmap()绘制,它工作正常。

但对于Per-Pixel-Collision检测,我使用的是getPixel(),但它总是返回0。

我正在以下列方式创建位图 -

Bitmap bmp= BitmapFactory.decodeResource(context.getResources(), R.drawable.image);
//image is a PNG file

但是以下总是给出0 -

Toast.makeText(getContext(),""+bmp.getPixel(x,y), Toast.LENGTH_SHORT).show();
//x and y are within the boundary

我甚至尝试了以下内容,但结果相同 -

BitmapFactory.Options opt=new BitmapFactory.Options();
opt.inMutable=true;
Bitmap bmp= BitmapFactory.decodeResource(context.getResources(), R.drawable.image,opt);

作为初学者,我对位图和配色方案没有太多的了解,所以,为什么会发生这种情况并且任何解决方案都会有很大的帮助。 我的项目在这个问题中途停滞不前。

谢谢

1 个答案:

答案 0 :(得分:0)

自己找到解决方案。它是一种解决方法,而不是一种解决方案,但它确实有效。

只需将 BitmapFactory.Options 对象传递给 BitmapFactory.decodeStream ,如下所示。

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap source = BitmapFactory.decodeStream(context.getResources(), R.image,opt);