Загрузка изображения из папки assets

Я пытаюсь загрузить изображение из asset папка, а затем установите его в ImageView. Я знаю, что гораздо лучше, если я использую R.id.* для этого, но предпосылка заключается в том, что я не знаю идентификатор изображения. В принципе, я пытаюсь динамически загрузить изображение через его имя файла.

например, я случайно получить в элементе database представляя, скажем,'корова', теперь мое приложение будет отображать изображение 'корова' через ImageView. Это также верно для всех элементов database. (Предполагается, что для каждого элемента существует эквивалентное изображение)

спасибо заранее.

редактировать

забыл вопрос, как загрузить изображение из ?

6 ответов


Если вы знаете имя файла в коде, называя это не будет проблемой:

ImageView iw= (ImageView)findViewById(R.id.imageView1);  
int resID = getResources().getIdentifier(drawableName, "drawable",  getPackageName());
iw.setImageResource(resID);

ваше имя файла будет таким же, как drawableName, поэтому вам не придется иметь дело с активами.


оформить заказ код . В этом уроке вы можете найти, как загрузить изображение из папки активов.

// загрузка изображения

try 
{
    // get input stream
    InputStream ims = getAssets().open("avatar.jpg");
    // load image as Drawable
    Drawable d = Drawable.createFromStream(ims, null);
    // set image to ImageView
    mImage.setImageDrawable(d);
  ims .close();
}
catch(IOException ex) 
{
    return;
}

вот ты где,

  public Bitmap getBitmapFromAssets(String fileName) {
    AssetManager assetManager = getAssets();

    InputStream istr = assetManager.open(fileName);
    Bitmap bitmap = BitmapFactory.decodeStream(istr);

    return bitmap;
}

некоторые из этих ответов могут ответить на вопрос, но мне никогда не нравился ни один из них, поэтому я закончил писать это, это моя помощь сообществу.

Get Bitmap активы:

public Bitmap loadBitmapFromAssets(Context context, String path)
{
    InputStream stream = null;
    try
    {
        stream = context.getAssets().open(path);
        return BitmapFactory.decodeStream(stream);
    }
    catch (Exception ignored) {} finally
    {
        try
        {
            if(stream != null)
            {
                stream.close();
            }
        } catch (Exception ignored) {}
    }
    return null;
}

Get Drawable активы:

public Drawable loadDrawableFromAssets(Context context, String path)
{
    InputStream stream = null;
    try
    {
        stream = context.getAssets().open(path);
        return Drawable.createFromStream(stream, null);
    }
    catch (Exception ignored) {} finally
    {
        try
        {
            if(stream != null)
            {
                stream.close();
            }
        } catch (Exception ignored) {}
    }
    return null;
}

WebView web = (WebView) findViewById(R.id.webView);
web.loadUrl("file:///android_asset/pract_recommend_section1_pic2.png");
web.getSettings().setBuiltInZoomControls(true);

public static Bitmap getImageFromAssetsFile(Context mContext, String fileName) {
        Bitmap image = null;
        AssetManager am = mContext.getResources().getAssets();
        try {
            InputStream is = am.open(fileName);
            image = BitmapFactory.decodeStream(is);
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return image;
    }