Bitmap加載方式
- BitmapFactory.decodeByteArray() 字節(jié)數(shù)組
- BitmapFactory.decodeFile() 文件路徑
- BitmapFactory.decodeResource() 資源ID
- BitmapFactory.decodeStream() 流
如何高效加載Bitmap
- 理論依據(jù):BitmapFactory.Options這個類為我們高效加載提供了可能术徊。
- BitmapFactory.Options有以下幾個重要屬性:
- inJustDecodeBounds
- outWidth&outHeight
- inSampleSize
代碼
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
public class BitmapUtil {
public static Bitmap ratio(String filePath,int pixelW,int pixelH){
BitmapFactory.Options newOptions = new BitmapFactory.Options();
newOptions.inJustDecodeBounds = true;
newOptions.inPreferredConfig = Bitmap.Config.RGB_565;
//預加載
BitmapFactory.decodeFile(filePath,newOptions);
int originalW = newOptions.outWidth;
int originalH = newOptions.outHeight;
newOptions.inSampleSize = getSimpleSize(originalW,
originalH,pixelW,pixelH);
newOptions.inJustDecodeBounds = false;
return BitmapFactory.decodeFile(filePath,newOptions);
}
private static int getSimpleSize(int originalW, int originalH, int pixelW, int pixelH) {
int simpleSize = 1;
if (originalW > pixelW || originalH > pixelH) {
//計算出實際寬高和目標寬高的比率
final int widthRatio = Math.round((float) originalW / (float) pixelW);
final int heightRatio = Math.round((float) originalH / (float) pixelH);
/*選擇寬和高中最小的比率作為inSampleSize的值闻葵,這樣可以保證最終圖片的寬和高
一定都會大于等于目標的寬和高牙丽。*/
simpleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return simpleSize;
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者