我是 Android 开发新手,正面临这个问题。 我想使用 Canvas 的 drawBitmap() 函数在屏幕上插入 png 图像。但是当我尝试解码此类图像时,我收到此错误:
无法解码流:java.io.FileNotFoundException:/drawable/fa_diesis.png:打开失败:ENOENT(没有这样的文件或目录) W/System.err:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.graphics.Bitmap.getWidth()”
以下代码:
private void drawImage(float x, float y){
File file = new File("drawable/fa_diesis.png");
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
Rect source = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
Rect bitmapRect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
canvas.drawBitmap(bitmap, x, y, new Paint());
}
在 drawable 文件夹中,我有以下结构: res folder image .我注意到我想使用的照片有标签(androidTest),也许它不应该有它。
有人可以帮忙吗?谢谢。
最佳答案
您可以尝试重新复制粘贴您的图像。该文件应该只有名称,不带 androidTest.txt。添加图像时,确保目录位于\app\src\main\res\drawable
然后删除文件类,变量还更改以下代码以将可绘制的图像访问为位图
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
成为
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.fa_diesis);
方法
private void drawImage(float x, float y) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.fa_diesis);
Rect source = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
Rect bitmapRect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
canvas.drawBitmap(bitmap, x, y, new Paint());
}
希望对你有帮助
关于java - 无法解码流: java. io.FileNotFoundException :/drawable/fa_diesis. png:打开失败:ENOENT(没有这样的文件或目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61960924/