Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to load a image from assets?

Tags:

android

assets

i need to load a image from assets to avoid a froyo 2.2.2 bug resizing POT images in some particular cases. The way to avoid it is loading the image files from assets dir.

I'm trying to do with this:

String imagePath = "radiocd5.png"; AssetManager mngr = context.getAssets(); // Create an input stream to read from the asset folder InputStream is = null; try {     is = mngr.open(imagePath); } catch (IOException e1) { e1.printStackTrace();}      //Get the texture from the Android resource directory //InputStream is = context.getResources().openRawResource(R.drawable.radiocd5); Bitmap bitmap = null; try {     //BitmapFactory is an Android graphics utility for images     bitmap = BitmapFactory.decodeStream(is);  } finally {     //Always clear and close     try {         is.close();         is = null;     } catch (IOException e) {} } 

But i am getting NullPointerException on the line is.close();

i capture a FileNotFoundException: radiocd5.png, but that file is on my assets directory :S

What am i doing bad? The file is called radiocd5.png and it is on the assets directory

like image 743
NullPointerException Avatar asked Oct 04 '11 08:10

NullPointerException


Video Answer


2 Answers

You can follow my tutorials on displaying data from Assets: https://xjaphx.wordpress.com/2011/10/02/store-and-use-files-in-assets/
The sample with loading image and text to display.

I now added the relevant part of the provided link (in case of earthquake or something) ;-) Taifun

// load image 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); } catch(IOException ex) {     return; } 
like image 79
Pete Houston Avatar answered Oct 15 '22 11:10

Pete Houston


Instead of using the assets dir, put the file into /res/raw, and you can then access it using the following URI: android.resource://com.your.packagename/" + R.raw.radiocd5

like image 29
user496854 Avatar answered Oct 15 '22 11:10

user496854