我看到有很多与此问题相关的解决方案,但这些都没有解决我的问题。
我尝试使用 BitmapFactory.decodeFile(path) 函数将图像从 png 文件读取为位图(图像非常小~16px,因此没有选项导致 OutOfMemoryException)。
我的文件层次结构尽可能简单:
-java
--example.com.app
---MainActivity.class
-res
--可绘制
---数组.png
我从 MainActivity 启动应用程序,然后单击按钮,我尝试将 png 图像读取为位图。 我尝试通过以下方式将图像读取为位图:
String path = Uri.parse("android.resource://"+R.class.getPackage().getName() +"/drawable/arrow.png").toString();
Bitmap bitmap = BitmapFactory.decodeFile(path);
String path = Uri.parse("android.resource://drawable/arrow.png").toString();
Bitmap bitmap = BitmapFactory.decodeFile(path);
每次位图都为空。你知道哪里可能有问题吗?
Android API 27
你应该使用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);
在应用程序标签下的Manifest文件中添加以下代码行
android:requestLegacyExternalStorage="true"