2013-04-06 101 views
0

在圖像上FileNotFoundException異常我試圖用這個代碼,我已經看到了多篇文章在整個計算器安卓:在繪製

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異常:可繪製/文件名」。我肯定有一個文件,我試圖加載到可繪製文件夾中。有任何想法嗎?我嘗試過使用和不使用文件擴展名,嘗試將文件放入每個文件夾並嘗試多個電話/模擬器。

+0

嘗試新的BufferedInputStream((assets.open(.getResources()getDrawable(R.drawble.img))); – 2013-04-06 06:46:28

+0

是圖片名稱包含 大寫字母? – 2013-04-06 06:51:25

回答

4

AssetManager用於訪問assets文件夾中的數據。所以在你的例子中,它尋找assets/drawable/filename並沒有找到任何東西。

要想從繪製的資源,應該使用

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

如果你確定這是一個位圖,你可以像這樣:

Bitmap bm = ((BitmapDrawable)getResources() 
       .getDrawable(R.drawable.filename)).getBitmap(); 
+0

謝謝!如果可能的話,會upvote。 – 2013-04-06 07:16:49

+0

如果它對你有幫助,你可以接受答案。 – Ridcully 2013-04-06 07:36:51

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);