2013-04-06 1 views
0

Я пытаюсь использовать этот код, который я видел на нескольких постах в течение StackOverflowAndroid: 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))). –

+0

ваше имя изображения содержит Заглавная буква? –

ответ

4

AssetManager предназначен для доступа к данным в папке assets. Поэтому в вашем примере он ищет assets/drawable/filename и ничего не находит.

Чтобы получить ресурс из Drawable, следует использовать

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

Если вы уверены, что это растровое изображение, вы можете сделать это так:

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

Спасибо тонну! Если бы это было возможно. –

+0

Вы можете принять ответ, если он вам поможет. – Ridcully

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