无法解码流:java.io.FileNotFoundException:/drawable/fa_diesis.png:打开失败:ENOENT(没有这样的文件或目录)

Unable to decode stream: java.io.FileNotFoundException: /drawable/fa_diesis.png: open failed: ENOENT (No such file or directory)

我是 Android 开发的新手,我正面临这个问题。 我想使用 CanvasdrawBitmap() 函数在屏幕上插入一个 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 的名称。添加图像时,请确保目录将转到 \app\src\main\res\drawable

然后删除文件 class 并且变量也更改以下代码以访问可绘制的图像为位图

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());
}

希望对你有帮助

问题已解决,再次添加想要的图片, 也许我添加得很糟糕。现在图片旁边不再有 "androidtest" 标语。我还将 decodeFile 替换为 decodeResource 函数。

非常感谢!