2012-11-23 155 views
1

我用這個代碼從資產文件夾獲取文件:獲得從資產文件夾中的文件的Android

intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///android_asset/"+knowImage)) 

但是當打印該行始終文件之間得到空間:/// android_asset和knowimage串!

打印知識時沒有空間!但是,當他們結合的結果是一個空間,所以不能用它

輸出是這樣:

11-23 14:16:29.128: I/Share(18204): file:///android_asset/ 
11-23 14:16:29.128: I/Share(18204): lovingurpregnantbodyS.png 

,但它必須是這樣的:

file:///android_asset/lovingurpregnantbodyS.png 
+0

你如何生成你指定的輸出?是Uri.toString還是別的? – blacharnia

回答

4

這是方法,你可以按照您在應用程序中的要求使用。在ImageView上顯示時,您還可以重新調整圖像大小。跳這將幫助你。

public Bitmap getBitmapFromAsset(String strName) { 
     AssetManager assetManager = getAssets(); 
     InputStream istr = null; 
     try { 
      try { 
       istr = assetManager.open(strName); 
      } catch (FileNotFoundException e) { 
       istr = assetManager.open("noimage.png"); 
      } 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
     Bitmap bitmap = BitmapFactory.decodeStream(istr); 
     int Height = bitmap.getHeight(); 
     int Width = bitmap.getWidth(); 
     float scale = getResources().getDisplayMetrics().density; 
     int dip = (int) (40 * scale + 0.5f); 
     int newHeight = width - dip; 
     int newWidth = width - dip; 
     float scaleWidth = ((float) newWidth)/Width; 
     float scaleHeight = ((float) newHeight)/Height; 
     Matrix matrix = new Matrix(); 
     matrix.postScale(scaleWidth, scaleHeight); 
     Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, Width, Height, 
       matrix, true); 

     return resizedBitmap; 
    } 

調用方法,如:

Imgview.setImageBitmap(getBitmapFromAsset("YourFoldername/"+ imgname + ".jpg")); 
+0

我刪除了所有調整大小的東西,並設置位圖bitmap2 = Bitmap.createBitmap(位圖),並使用getBitmapFromAsset(xxxx.png),但它崩潰! –

+0

現在我可以得到圖像,但當涉及到其他應用程序崩潰,意味着圖像傳遞到Gmail或任何它崩潰! GMAIL崩潰或WHATSAPP崩潰,似乎他們不能打開位圖或什麼 –

+0

你能告訴我,請問哪個錯誤發生? – Hasmukh

2

您可以使用此方法:

public static void loadAssetImage(String path, ImageView imageView, 
     Context context) 
{ 
    try 
    { 
     Bitmap b = BitmapFactory.decodeStream(context.getAssets().open(path)); 
     imageView.setImageBitmap(Bitmap.createScaledBitmap(b, b.getHeight(), 
       b.getHeight() * b.getHeight()/b.getWidth(), false)); 
    } 
    catch (Exception e) 
    { 
     Log.e("Exception", e.getLocalizedMessage()); 
    } 
} 

呼叫在活動:

FileUtils.loadAssetImage("Folder/image.png, imageView, CurrentActivity.this); 
相關問題