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

标签 java android-studio canvas bitmap drawable

我是 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.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/

相关文章:

java - 未找到源 jre7 lib 没有源附件

java - 有没有比 ArrayList 更适合这种场景的集合?

android - Android Studio 3 中的 "Activity Manager State"在哪里?

java - 构建 APK Android Studio 2.2.3 时出错

使用笔自由绘制时,JavaFX 在 Canvas 上的性能下降

java - 字节码特定部分的修改

java - 在手机上运行应用程序时出现 MainActivity.java 错误

java - 更改 Android 的 GCM API key

javascript - 生成许多​​随机宽度和高度 block 并将它们填充到 HTML5 Canvas 的整个宽度 - EaselJS

javascript - 如何在移动和桌面设备上缩放 Canvas