BitmapFactory.Options 通过采样率避免OOM
来源:互联网 发布:中国网络经纪人登录 编辑:程序博客网 时间:2024/05/14 04:58
private static final String TAG = "ImageResizer"; public ImageResizer() { } public 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); } public Bitmap decodeSampledBitmapFromFileDescriptor(FileDescriptor fd, int reqWidth, int reqHeight) { // First decode with inJustDecodeBounds=true to check dimensions final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFileDescriptor(fd, null, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; return BitmapFactory.decodeFileDescriptor(fd, null, options); } public int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { if (reqWidth == 0 || reqHeight == 0) { return 1; } // Raw height and width of image final int height = options.outHeight; final int width = options.outWidth; Log.d(TAG, "origin, w= " + width + " h=" + height); int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int halfHeight = height / 2; final int halfWidth = width / 2; // Calculate the largest inSampleSize value that is a power of 2 and // keeps both // height and width larger than the requested height and width. while ((halfHeight / inSampleSize) >= reqHeight && (halfWidth / inSampleSize) >= reqWidth) { inSampleSize *= 2; } } Log.d(TAG, "sampleSize:" + inSampleSize); return inSampleSize; }
0 0
- BitmapFactory.Options 通过采样率避免OOM
- BitmapFactory.Options.inSampleSize(避免OOM)
- android之BitmapFactory.Options的使用,避免oom
- android之 BitmapFactory.Options避免内存溢出OOM的优化方法
- BitmapFactory.Options 解决加载大图片OOM
- BitmapFactory.Options 解决加载大图片OOM
- BitmapFactory.Options 解决加载大图片OOM
- BitmapFactory.Options 解决加载大图片OOM
- BitmapFactory.Options 解决加载大图片OOM
- Android图片 BitmapFactory.Options.inSampleSize 采样率不准确问题
- 通过BitmapFactory.Options来缩放图片
- BitmapFactory.Options
- BitmapFactory.Options
- BitmapFactory.Options
- BitmapFactory.Options
- BitmapFactory.Options
- BitmapFactory.Options
- BitmapFactory Options
- OpenCV3.2使用Cmake进行编译时注意事项
- MATLAB FFT变换中,数字频率与模拟频率的转换关系
- 基于FEA的暴力破解行为分析
- C++中 #ifdef 和#endif的作用
- 如何使用Fragment构建灵活的UI
- BitmapFactory.Options 通过采样率避免OOM
- 内存系统架构
- Android 中二维码扫码功能集成zxing注意事项 自定义扫码取景区
- ios内加载资源
- DNS中的正向解析与反向解析
- 秒杀的设计流程
- 关于jquery的弹窗组件简单封装
- linux高级命令
- ubuntu 不能新建文件夹