Android:圖片不加載到內存獲取圖片的大小

在顯示圖片的時候往往圖片大小並不合適我們手機屏幕大小,我們一般都會對圖片進行壓縮修改,達到節省內存的目的。

那麼我們可以怎樣獲取圖片大小呢?

	Bitmap bitmap=BitmapFactory.decodeFile("");
	Bitmap bitmap=BitmapFactory.decodeResource(res, id);

我們可以使用以上兩種方法,分別適用於獲取sd卡上某個位置圖片的bitmap對象,以及適合獲取app內部資源圖片的bitmap對象。(除此之外還有一堆獲取bitmap對象的方法這裏不一一列舉)

再根據所獲取得到的對象

bitmap.getWidth();
bitmap.getHeight();
分別獲取寬和高~這樣就可以了~~


慢着~這真的可以嗎?以上方法都是把圖片給加載到內存之後再獲取圖片的寬和高的~這是要先加載到內存裏獲取圖片寬高,然後再根據寬高裁剪圖片,再把裁剪好的圖片加載一次到內存,最後顯示出來的節奏嗎?這分明是在浪費內存而不是節約內存啊~而且有些圖片過大,直接加載到內存裏會導致oom~這也是要經過裁剪再加載到內存裏面的原因~

好吧此路不通~另外還有方法~:

	BitmapFactory.Options op=new Options();
	op.inJustDecodeBounds=true;
	BitmapFactory.decodeFile("", op);
decodeFile方法還有另外一個重載,經過這個方法傳進去的Options我們可以設定只讀取該圖片的頭信息而不解析該圖~

設置的方法就是把一個Options對象new出來然後設置它的inJustDecodeBounds爲true,最後傳到decodeFile的第二個參數裏面就可以了(decodeResource也有對應的重載)


然後再根據Options對象獲取該圖的寬和高~~

op.outWidth;
op.outHeight;





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章