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

问题描述 投票:0回答:1

我是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),也许不应该包含它。

有人可以帮忙吗?谢谢。

java android-studio canvas bitmap drawable
1个回答
0
投票

您可以尝试重新复制粘贴您的图像。该文件应仅为没有androidTest的名称。添加图像时,请确保目录进入\ app \ src \ main \ res \ drawable

然后删除文件类和变量也更改以下代码,以将可绘制的图像访问为位图

位图位图= BitmapFactory.decodeFile(file.getAbsolutePath());

成为

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

希望对您有帮助

© www.soinside.com 2019 - 2024. All rights reserved.