Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
getPixel()为PNG位图提供0:Android_Android_Canvas_Bitmap_Png_Getpixel - Fatal编程技术网

getPixel()为PNG位图提供0:Android

getPixel()为PNG位图提供0:Android,android,canvas,bitmap,png,getpixel,Android,Canvas,Bitmap,Png,Getpixel,我现在面对这个问题已经两天了。我正在通过画布制作一个2D游戏,它有一个PNG文件,我用drawBitmap()在画布上绘制,效果很好 但对于每像素碰撞检测,我使用getPixel(),但它总是返回0 我用以下方法创建位图- Bitmap bmp= BitmapFactory.decodeResource(context.getResources(), R.drawable.image); //image is a PNG file 但是跟随总是给0- Toast.makeText(getCon

我现在面对这个问题已经两天了。我正在通过画布制作一个2D游戏,它有一个PNG文件,我用drawBitmap()在画布上绘制,效果很好

但对于每像素碰撞检测,我使用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);
作为一名初学者,我对位图和配色方案没有太多的了解,因此,了解为什么会发生这种情况以及任何解决方案都会有很大帮助。 我的项目因为这个问题中途停顿了


谢谢

我自己找到了解决方案。这与其说是一个解决方案,不如说是一个变通办法,但它确实有效

只需将一个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);

我自己找到了解决办法。这与其说是一个解决方案,不如说是一个变通办法,但它确实有效

只需将一个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);