BitmapFactory.decodeStream возвращает ноль (изображение в jar-файле)
Я пытаюсь обменять изображения с Unity3d на Java.
От Unity я отправляю:
var filePath = System.IO.Path.Combine(Application.streamingAssetsPath, scene.thumbnail.name + ".jpg");
Это возвращает следующий путь в Android (видно через log.i):
jar:file:///data/app/com.package.name/base.apk!/assets/image_1.jpg
Я сейчас пытаюсь декодировать это изображение в растровое изображение:
InputStream stream = this.getClass().getClassLoader().getResourceAsStream("/assets/image_1.jpg");
Bitmap bitmap = BitmapFactory.decodeStream(stream);
if (bitmap != null)
imageItems.add(new ImageItem(bitmap, "Image#" + i));
Однако растровое изображение всегда равно нулю. Что мне не хватает? Я имею в виду неправильный путь? Как я могу сказать Java для декодирования файла в пути, который обеспечивает Unity? Спасибо!!
1 ответ
Решение
Я понял:)
Мне пришлось использовать AssetManager:
AssetManager assetManager = getAssets();
InputStream stream;
try {
stream = assetManager.open(imagePathList.get(i));
Bitmap bitmap = BitmapFactory.decodeStream(stream);
if (bitmap != null)
imageItems.add(new ImageItem(bitmap, "Image#" + i));
} catch (IOException ex) {
return null;
}