Cómo cargar una imagen de los activos?

Necesito cargar una imagen de los activos para evitar un error froyo 2.2.2 que redimensiona las imágenes POT en algunos casos particulares. La forma de evitarlo es cargar los archivos de imagen del directorio de activos.

Estoy tratando de hacer con esto:

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) { } } 

Pero is.close(); NullPointerException en la línea is.close();

Capturo una FileNotFoundException: radiocd5.png, pero ese archivo está en mi directorio de activos: S

¿Qué estoy haciendo mal? El archivo se llama radiocd5.png y está en el directorio de assets

Puede seguir mis tutoriales para mostrar datos de los activos: https://xjaphx.wordpress.com/2011/10/02/store-and-use-files-in-assets/
La muestra con la carga de la imagen y el texto para mostrar.

Ahora agregué la parte relevante del enlace proporcionado (en caso de terremoto o algo así) 😉 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; } 

En lugar de usar el directorio de activos, coloque el archivo en / res / raw, y luego puede acceder a él utilizando el siguiente URI: android.resource://com.your.packagename/" + R.raw.radiocd5

  try { InputStream istr =this.context.getAssets().open(P.strImage); //set drawable from stream this.imgProduct.setImageDrawable(Drawable.createFromStream(istr, null)); } catch (IOException e) { e.printStackTrace(); } 
  protected String openImageInAssets(String imageName){ String encodedImageBase64 = ""; AssetManager assetManager = getAssets(); InputStream fileStream = null; try { fileStream = assetManager.open(imageName); if(fileStream != null){ // BitmapFactory.Options bfo = new BitmapFactory.Options(); // bfo.inPreferredConfig = Bitmap.Config.ARGB_8888; // Bitmap bitmap = BitmapFactory.decodeStream(fileStream, null, bfo); Bitmap bitmap = BitmapFactory.decodeStream(fileStream); // Convert bitmap to Base64 encoded image for web ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // to get image extension file name split the received int fileExtensionPosition = imageName.lastIndexOf('.'); String fileExtension = imageName.substring(fileExtensionPosition+1); // Log.d(IConstants.TAG,"fileExtension: " + fileExtension); if(fileExtension.equalsIgnoreCase("png")){ bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); // Log.d(IConstants.TAG,"fileExtension is PNG"); }else if(fileExtension.equalsIgnoreCase("jpg") || fileExtension.equalsIgnoreCase("jpeg")){ bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); // Log.d(TAG,"fileExtension is JPG"); } byte[] byteArray = byteArrayOutputStream.toByteArray(); String imgageBase64 = Base64.encodeToString(byteArray, Base64.DEFAULT); encodedImageBase64 = "data:image/png;base64," + imgageBase64; } } catch (IOException e) { e.printStackTrace(); return encodedImageBase64=""; } finally { //Always clear and close try { if(fileStream != null) { fileStream.close(); fileStream = null; } } catch (IOException e) { e.printStackTrace(); } } // Log.d(TAG,"encodedImageBase64: " + encodedImageBase64); return encodedImageBase64; } 
    Intereting Posts