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);