getPixel() дает 0 для PNG растрового изображения:Android

Я сталкиваюсь с этой проблемой уже 2 дня. Я делаю 2D-игру через Canvas, и в ней есть 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 ответ

Получил решение самостоятельно. Это скорее обходной путь, чем решение, но это работает.

Просто передайте объект 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);
Другие вопросы по тегам