Bitmap加载方式
- BitmapFactory.decodeByteArray() 字节数组
- BitmapFactory.decodeFile() 文件路径
- BitmapFactory.decodeResource() 资源ID
- BitmapFactory.decodeStream() 流
如何高效加载Bitmap
- 理论依据: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;
}
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。