我是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的名称。添加图像时,请确保目录进入\ 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());
}
希望对您有帮助