2017-01-02 57 views
1

將圖像顯示到imageView的最佳做法是什麼?我們有兩種類型的圖像,一種是bitmap,另一種是URI。如果使用位圖,URI和位圖圖像之間的區別

Bitmap photo = (Bitmap) data.getExtras().get("data"); 
imageView.setImageBitmap(photo); 

圖像有點模糊。

如果我使用URI,有時會出現內存不足問題。

URI imageUri = data.getData(); 
imageView.setImageURI(imageURI); 

這兩者有什麼區別?

enter image description here

回答

1

ImageView有4個API來指定圖像。

  1. setImageDrawable(可繪製可繪製的)
  2. setImageBitmap(位圖BM)
  3. setImageResource(INT渣油)
  4. setImageURI(URI URI)

這裏setImageDrawable是原始函數其他API依賴上。其他3個只是幫你編寫更少代碼的方法。

setImageURIsetImageBitmap都在UI線程上運行。我會說setImageBitmap比第一個快一點。 setImageURI實際上取決於Uri資源來自哪裏(例如,uri可能指向一個甚至不存儲在電話中的遠程文件)。

setImageURI()不能更好地用作UI線程上的讀取和解碼,這會導致延遲打嗝。

最好使用下列內容: -

setImageDrawable(android.graphics.drawable.Drawable)setImageBitmap(android.graphics.Bitmap)BitmapFactory代替。

您還可以從uriimageview

Uri imageUri = intent.getData(); 
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri); 
Imageview my_img_view = (Imageview) findViewById (R.id.my_img_view); 
my_img_view.setImageBitmap(bitmap); 

返回bitmap和也使用它在某個時候裝載imageview的大位會導致內存不足exception..so你應該有效地加載位圖..

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, 
    int reqWidth, int reqHeight) { 

    // First decode with inJustDecodeBounds=true to check dimensions 
    final BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeResource(res, resId, options); 

    // Calculate inSampleSize 
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); 

    // Decode bitmap with inSampleSize set 
    options.inJustDecodeBounds = false; 
    return BitmapFactory.decodeResource(res, resId, options); 
} 

mImageView.setImageBitmap(
    decodeSampledBitmapFromResource(getResources(), R.id.myimage, 100, 100)); 

看到那些鏈接也..爲了更好的理解

  1. Strange out of memory issue while loading an image to a Bitmap object

  2. Android開發者文檔:https://developer.android.com/training/displaying-bitmaps/load-bitmap.html

+0

感謝有用的提示! –

+0

如何知道reqWidth和reqHeight的值是什麼,以免圖像看起來模糊? –

1

Bitmap是一個現成的圖像(set of bytes with color data)和URI是什麼路徑。 URI可以是/emulated/home/...,可以是http://google.com等等。

相關問題