0

我正在尝试使用我在整个 stackoverflow 的多个帖子中看到的这段代码

    public static Bitmap loadBitmap(Context context, String filename) throws IOException {
           AssetManager assets = context.getResources().getAssets();
           InputStream buf = new BufferedInputStream((assets.open("drawable/" + filename)));
           Bitmap bitmap = BitmapFactory.decodeStream(buf);

           return bitmap;
   }

但我得到一个“FileNotFoundException:drawable/filename”。我肯定有一个名称为我试图加载到可绘制文件夹中的文件。有任何想法吗?我尝试过使用和不使用文件扩展名,尝试将文件放入每个文件夹并尝试多个手机/模拟器。

4

2 回答 2

4

AssetManager旨在访问assets文件夹中的数据。因此,在您的示例中,它会查找assets/drawable/filename但未找到任何内容。

要从drawable中获取资源,应该使用

Drawable d = getResources().getDrawable(R.drawable.filename);

如果你确定它是一个位图,你可以这样做:

Bitmap bm = ((BitmapDrawable)getResources()
                .getDrawable(R.drawable.filename)).getBitmap();
于 2013-04-06T06:53:09.580 回答
3

你可以这样做...

// load image from Assets folder
        // get input stream
        InputStream mIms = getAssets().open("ic_launcher.png");
        // load image as Drawable
        Drawable mDraw = Drawable.createFromStream(mIms, null);
        // set image to ImageView
        mIms.setImageDrawable(mDraw);
于 2013-04-18T11:09:41.230 回答