BitmapFactory.decodeStream返回null(jar文件中的图像)

时间:2015-03-15 13:57:22

标签: java android unity3d stream bitmapfactory

我正在尝试将图像从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));

但是,位图始终为null。我错过了什么?我指的是错误的道路吗?如何告诉java在Unity提供的路径中解码文件? 谢谢!

1 个答案:

答案 0 :(得分:0)

我明白了:)

我必须使用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;

}