Bitmap Factory抛出FileNotFoundException

时间:2016-09-20 22:18:21

标签: java android bitmap android-resources android-bitmap

我有一个奇怪的问题。我想在我的Android项目中使用我的res / drawable文件夹中的PNG文件,并在ImageButton中使用这样的PNG文件(其方法为“setImageBitmap(Bitmap bm)”)我需要解码PNG图像我有我的res / drawable文件。但是,当我复制路径并尝试解码它时:

public Bitmap getBitMap() {
    return BitmapFactory.decodeFile("drawable/bishop00.png");
}

我看到一些线程说我也可以使用BitmapFactory的“decodeResources”方法,但是这段代码不在一个活动中,我不希望使用一个活动作为参数来使用该方法,看到因为这应该工作。我也尝试使用绝对路径(复制显示我的系统的整个层次结构的路径)但我仍然得到以下异常:

Unable to decode stream: java.io.FileNotFoundException

真的希望得到一些帮助,因为我完全确定该文件存在。

1 个答案:

答案 0 :(得分:1)

  

我正在尝试在我的Android项目中使用res / drawable文件夹中的PNG文件

这是您的开发计算机上的文件。它不是Android设备上的文件。

  

认为这应该有效

不,它不应该。

  

我看到一些线程说我也可以使用BitmapFactory的“decodeResources”方法

这是正确的答案,假设这个内容首先应该是一个可绘制的资源。虽然使用decodeResource()有一些正当理由,但它并不是常用的。可能还有其他方法可以使用更合适的可绘制资源,或者可能首先不应该是可绘制资源。

  

但此代码不在活动中

decodeResource()需要Context。它不一定是Activity,但通常可能是候选人。您的所有代码都是以Context开头的代码路径执行的;你应该没有问题在这里使用。