2011-10-04 44 views
27

Bazı özel durumlarda POT görüntülerini yeniden boyutlandırmak için froyo 2.2.2 hatalarından kaçınmak için öğelerden bir görüntü yüklemeliyim. Bundan kaçınmanın yolu görüntü dosyalarını varlıklardan dir. Benim bu işle çalışıyorumÖğelerden bir resim nasıl yüklenir?

:

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

Ama ben bir FileNotFoundException yakalamak is.close();

hattında NullPointerException alıyorum: radiocd5.png, ama bu dosya benim varlıklar dizinde üzerindedir : S

Neyi kötüyüm? Dosya radiocd5.png denir ve

cevap

51

yapabilirsiniz Verileri görüntülemek için derslerimi takip et Öğelerim: https://xjaphx.wordpress.com/2011/10/02/store-and-use-files-in-assets/
Görüntü yüklenecek ve görüntülenecek metin içeren örnek.

şimdi verilen linki ilgili kısımlarından eklendi ;-) 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; 
} 
+0

direklerini oluşturamadığı için oluşturuyoruz, çünkü derste yaptığınız gibi hata yapıyorsunuz? – NullPointerException

+0

hangi hata? lütfen açık olun, bana yeterince ve iyi bilgi sağladığınız sürece size yardımcı olmaya çalışıyorum. –

+0

ben sorumu düzenledim, bana hata verir. Is.close(); satır – NullPointerException

3

yerine varlıklar dir kullanmanın assets dizinde açık durumda, aşağıdaki URI ham/res/dosyayı koymak ve daha sonra kullanarak erişebilirsiniz: android.resource://com.your.packagename/" + R.raw.radiocd5

+1

(deprem veya bir şeyin söz konusu olduğunda) i ham dizini yok, ve ben yapamam Bu uygulama bizim şirket jeneratörü ile otomatik olarak oluşturulacağı ve – NullPointerException

2
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(); 
    } 
1
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; 
    } 
İlgili konular