首页 > 解决方案 > Android BitmapFactory.decodeFile(path) 总是返回 null

问题描述

我看到有很多与这个问题相关的解决方案,但这些都没有解决我的问题。

我尝试使用 BitmapFactory.decodeFile(path) 函数将图像从 png 文件读取到位图(图像非常小~16px,所以没有选项我得到 OutOfMemoryException)。

我的文件层次结构尽可能简单:
-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);

每次位图为空。你知道哪里有问题吗?


安卓 API 27

标签: androidbitmapbitmapfactory

解决方案


或者使用简单的方法BitmapFactory

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

或者你可以使用context.getDrawable(R.drawable.arrow)which 将返回一个drawable可以使用的。在此处阅读有关此的更多信息

如果您仍想使用该路径,请使用在此处java.nio.file.Paths(folder1, folder2.. .. .) 阅读更多信息


推荐阅读