Android BitmapFactory.decodeFile(path)始终返回null

时间:2018-11-12 21:26:02

标签: android bitmap bitmapfactory

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

我尝试使用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);

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


Android API 27

2 个答案:

答案 0 :(得分:1)

或使用简单的方法BitmapFactory

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

或者您可以使用context.getDrawable(R.drawable.arrow)来返回drawable并准备使用。 了解有关此here

的更多信息

如果您仍要使用路径,请使用java.nio.file.Paths(folder1, folder2.. .. .) 了解有关此here

的更多信息

答案 1 :(得分:1)

您应该使用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);