Android BitmapFactory.decodeFile(路径)总是返回null



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

我尝试使用BitmapFactory.decodeFile(路径(函数将图像从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);

Everytime位图为空。你知道哪里可能有问题吗?


Android API 27

或者使用BitmapFactory的简单方法

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

或者您可以使用context.getDrawable(R.drawable.arrow),它将返回一个准备使用的drawable。在这里阅读更多关于

如果您仍想使用该路径,请使用java.nio.file.Paths(folder1, folder2.. .. .)在这里阅读更多关于

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

相关内容

  • 没有找到相关文章

最新更新