Android学习之图片压缩,压缩程度高且失真度小
2015-08-14 17:08
211 查看
以前在做手机上传图片的时候,直接获取相机拍摄的原图上传,原图大小一般1~2M,因此上传一张都比较浪费资源,有些场景还需要图片多张上传,所以最近查看了好多前辈写的关于图片处理的资料,然后试着改了一个图片压缩的方法。经测试用着还不错,压缩效果很理想,主要是失真不明显。在这里分享一下。
下面直接上代码:
下面直接上代码:
/** * 上传服务器时把图片调用下面方法压缩后 保存到临时文件夹 图片压缩后小于200KB,失真度不明显 * * @param path * @return * @throws IOException */ public static Bitmap revitionImageSize(String path) throws IOException { BufferedInputStream in = new BufferedInputStream(new FileInputStream( new File(path))); BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeStream(in, null, options); in.close(); int i = 0; Bitmap bitmap = null; // options.inJustDecodeBounds=true那么将不返回实际的bitmap对象,不给其分配内存空间但是可以得到一些解码边界信息即图片大小等信息 // outHeight(图片原始高度)和 outWidth(图片的原始宽度) // inSampleSize表示缩略图大小为原始图片大小的几分之一 // options.outWidth >> i(右移运算符)表示:outWidth/(2^i) while (true) { if ((options.outWidth >> i <= 2000) && (options.outHeight >> i <= 2000)) { in = new BufferedInputStream( new FileInputStream(new File(path))); options.inSampleSize = (int) Math.pow(2.0D, i); // 幂运算 i为几次方 options.inJustDecodeBounds = false; bitmap = BitmapFactory.decodeStream(in, null, options); break; } i += 1; } return bitmap; }
相关文章推荐
- 【转】Android中dp,px,sp概念梳理以及如何做到屏幕适配
- Android 屏幕适配方案
- 解决jni调用在Android5.x系统闪退问题
- android R.java文件介绍
- Android Train—notification通知
- android textView 折叠 展开 ExpandableTextView
- MTK Android 5.0以上版本的变化
- android图片压缩
- Android Ion用户空间和内核空间
- Android常见的错误整理(不定时更新)
- 使用Android Support Annotations优化你的代码
- Android无法生成R文件的终极解决办法
- android上传文件
- android--RelativeLayout布局的一些理解
- 深入浅出Android Support Annotations
- android lcd驱动简析
- Android(java)学习笔记154:使用GridView以及重写BaseAdapter
- Android 手机壁纸(动态2)
- android中利用animation实现Image的循环移动
- android权限