Android BitmapFactory.decodeFile (путь) всегда возвращает ноль - PullRequest
0 голосов
/ 13 ноября 2018

Я вижу, что есть много решений, связанных с этой проблемой, но ни одно из них не решило мою проблему.

Я пытаюсь прочитать изображение из png-файла в растровое изображение (изображение очень маленькое, ~ 16 пикселей, поэтому нет никакой возможности получить исключение OutOfMemoryException) с помощью функции BitmapFactory.decodeFile (path).

Моя файловая иерархия максимально проста:
-java
--example.com.app
--- MainActivity.class
-res
--drawable
--- array.png

Я запускаю приложение из MainActivity и по нажатию кнопки пытаюсь прочитать PNG-изображение в растровое изображение. Я пытаюсь прочитать изображение в растровое изображение следующими способами:

  1. String path = Uri.parse("android.resource://"+R.class.getPackage().getName() +"/drawable/arrow.png").toString(); Bitmap bitmap = BitmapFactory.decodeFile(path);

  2. String path = Uri.parse("android.resource://drawable/arrow.png").toString(); Bitmap bitmap = BitmapFactory.decodeFile(path);

Растровое изображение каждый раз пусто Знаете ли вы, где может быть проблема?


Android API 27

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы должны использовать decodeResource , ниже приведен пример:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.arrow, options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
String imageType = options.outMimeType;

Или используйте его простым способом decodeResource .

BitmapFactory.decodeResource(getResources(), R.id.arrow);
0 голосов
/ 13 ноября 2018

Или используйте простой метод BitmapFactory

BitmapFactory.decodeResource(getResources(), R.id.arrow);

Или вы можете использовать context.getDrawable(R.drawable.arrow), который вернет drawable, который готов к использованию.Подробнее об этом здесь

Если вы все еще хотите использовать путь, используйте java.nio.file.Paths(folder1, folder2.. .. .) Подробнее об этом здесь

...