Android 图片缩放引起的OOM异常全篇
来源:互联网 发布:java年月日时分秒插件 编辑:程序博客网 时间:2024/04/27 21:59
传输文件,或者设置头像,我们一般都会检查原始图片的大小,作缩放处理。
常用的Android版缩放图片代码:
常用的Java版缩放图片代码:
public Bitmap getZoomImage(Bitmap src, int desW, int desH){Bitmap desImg = null;int srcW = src.getWidth(); // 原始图像宽int srcH = src.getHeight(); // 原始图像高int[] srcBuf = new int[srcW * srcH]; // 原始图片像素信息缓存src.getPixels(srcBuf, 0, srcW, 0, 0, srcW, srcH);// 计算插值表int[] tabY = new int[desH];int[] tabX = new int[desW];int sb = 0;int db = 0;int tems = 0;int temd = 0;int distance = srcH > desH ? srcH : desH;for (int i = 0; i <= distance; i++){/* 垂直方向 */tabY[db] = sb;tems += srcH;temd += desH;if (tems > distance){tems -= distance;sb++;}if (temd > distance){temd -= distance;db++;}}sb = 0;db = 0;tems = 0;temd = 0;distance = srcW > desW ? srcW : desW;for (int i = 0; i <= distance; i++){/* 水平方向 */tabX[db] = (short) sb;tems += srcW;temd += desW;if (tems > distance){tems -= distance;sb++;}if (temd > distance){temd -= distance;db++;}}// 生成放大缩小后图形像素int[] desBuf = new int[desW * desH];int dx = 0;int dy = 0;int sy = 0;int oldy = -1;for (int i = 0; i < desH; i++){if (oldy == tabY[i]){System.arraycopy(desBuf, dy - desW, desBuf, dy, desW);}else{dx = 0;for (int j = 0; j < desW; j++){desBuf[dy + dx] = srcBuf[sy + tabX[j]];dx++;}sy += (tabY[i] - oldy) * srcW;}oldy = tabY[i];dy += desW;}// 生成图片desImg = Bitmap.createBitmap(desBuf, desW, desH, Bitmap.Config.ARGB_8888);return desImg;}public Bitmap getZoomImage(Bitmap src, int desW, int desH){Bitmap desImg = null;int srcW = src.getWidth(); // 原始图像宽int srcH = src.getHeight(); // 原始图像高int[] srcBuf = new int[srcW * srcH]; // 原始图片像素信息缓存src.getPixels(srcBuf, 0, srcW, 0, 0, srcW, srcH);// 计算插值表int[] tabY = new int[desH];int[] tabX = new int[desW];int sb = 0;int db = 0;int tems = 0;int temd = 0;int distance = srcH > desH ? srcH : desH;for (int i = 0; i <= distance; i++){/* 垂直方向 */tabY[db] = sb;tems += srcH;temd += desH;if (tems > distance){tems -= distance;sb++;}if (temd > distance){temd -= distance;db++;}}sb = 0;db = 0;tems = 0;temd = 0;distance = srcW > desW ? srcW : desW;for (int i = 0; i <= distance; i++){/* 水平方向 */tabX[db] = (short) sb;tems += srcW;temd += desW;if (tems > distance){tems -= distance;sb++;}
常用的Android版缩放图片代码:
- Android 图片缩放引起的OOM异常全篇
- Android 图片缩放引起的OOM异常全篇
- Android: 缩放图片文件引起的OOM异常
- Android: 缩放图片文件引起的OOM异常
- Android: 缩放图片文件引起的OOM异常
- Android: 缩放图片文件引起的OOM异常
- 如何处理图片引起的OOM异常?
- Android加载图片引起的OOM解决方案(转)
- 解决android缩放图片导致OOM的一个方案
- android 加载图片oom异常
- 图片资源过大引起OOM的问题
- Android 加载打图片出现OOM异常的处理方式
- 图片缩放,解决oom
- 图片缩放,解决OOM
- Android的加载大图片引起内存问题之OOM异常
- 图片二次采样有效防止因图片引起的OOM
- 处理getdrawable的方法引起的OOM异常
- android图片的打开和缩放时出现oom处理过程
- Select中DISTINCT关键字的用法
- JavaScript学习之 语法
- 我对面向对象的理解
- Android自定义属性,format详解
- FFmpeg在Visual Studio环境下的编译问题
- Android 图片缩放引起的OOM异常全篇
- ExtJS之Ext.Ajax.request用法待分析
- adapter 阴影问题
- A+B不用算数运算符
- 网站设为首页、加入收藏代码全集
- document应用
- Fedora15安装RMVB,MP3解码器
- 如何进行Android单元测试
- ubuntu防火墙设置