Загрузка изображения из папки 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;
}