曾经在做手机上传图片的时候。直接获取相机拍摄的原图上传,原图大小一般1~2M。因此上传一张都比較浪费资源,有些场景还须要图片多张上传,所以近期查看了好多前辈写的关于图片处理的资料。然后试着改了一个图片压缩的方法。经測试用着还不错。压缩效果非常理想,主要是失真不明显。在这里分享一下。

以下直接上代码:

 /*** 上传server时把图片调用以下方法压缩后 保存到暂时目录 图片压缩后小于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;}

转载于:https://www.cnblogs.com/llguanli/p/7112740.html

Android学习之图片压缩,压缩程度高且失真度小相关推荐

  1. 【Android学习】图片

    1,ImageView(图片视图) 1)概念 ImageView继承自View组件,它的主要功能是用于显示图片,且任何Drawable对象都可使用ImageView来显示. Android中不仅可以将 ...

  2. Android学习之图片切换

    main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:and ...

  3. Android学习之图片画廊(SimpleAdapter)

    main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:and ...

  4. Android滑动展示图片(一页多图,带小圆点,类似小米市场APP详情页图片展示)

    最近公司需求上有个功能,类似小米市场上APP详情页里的图片展示效果,有点像广告位的展示,只是广告位一般都是展示一张,这个要求一个屏幕展示多张,想了一下用ViewPager的话一方面需要控制最后一张图防 ...

  5. Android学习路线_梳理

    Android入门第一步,将需要学习的路线整体过一遍,了解学习的前置条件,明了自己的学习目标,胸有成竹才能势如破竹.本文中每个小点将单独出一篇文章,每篇文章将链路到此文,后续将持续更新. 1 工具篇 ...

  6. Android学习(一)

    Android简介 Android智能操作系统,主要手机,其他还有TV,穿戴设备,汽车等. Android架构 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XdsL ...

  7. 短视频怎么获得高流量?简单小技巧,让你的短视频被更多人看到

    短视频怎么获得高流量?简单小技巧,让你的短视频被更多人看到 对于做短视频的小伙伴们来说,想要获得高流量,让更多人看到自己的短视频是毋庸置疑的.那么今天,我们就一起来学习一下关于短视频获得高流量的简单小 ...

  8. Android学习之压缩图片到指定大小

    关于图片压缩,是为了上传服务器时有些地方有大小限制,因此,这里我总结了两种方法,个人感觉方法一比较准确一点. 方法一: * 图片压缩方法一* * 计算 bitmap大小,如果超过64kb,则进行压缩* ...

  9. takephoto 框架_GitHub - Smecking/TakePhoto: 一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库...

    TakePhoto是一款用于在Android设备上获取照片(拍照或从相册.文件中选择).裁剪图片.压缩图片的开源工具库,目前最新版本4.0.2. 3.0以下版本及API说明,详见TakePhoto2. ...

最新文章

  1. 趣谈网络协议笔记-零
  2. 修正memcache.php中的错误示例
  3. 初学Java,这些框架你要掌握
  4. 母版页(Master Pages)--轉載
  5. python sql查询返回记录_干货!Python与MySQL数据库的交互实战
  6. VMware vSphere 6.7之vSAN配置全程图解
  7. Java9 新特性 详解
  8. 加拿大第二大行TD Bank是如何践行科技战略的?
  9. Trufun Kant Studio 2008面向VS.NET的开发应用
  10. ssh自动登陆和scp自动拷贝文件
  11. Sql优化之Mysql表分区
  12. 算法习题---4-5IP网络(Uva1590)
  13. 【分享】Adobe Flash Player各版本安装包官方直接下载地址
  14. Unity3d C# Socket 下载文件 (同步到)
  15. Macbook开启HIDPI(2K显示器)
  16. 博客园的 “随笔、文章、日记”有什么区别?
  17. 拳王公社:虚拟资源项目赚钱方法?前2种最常见,第3种鲜为人知
  18. Win7 32 不能安装STM32 虚拟串口驱动解决方法
  19. Excel中DATEDIF函数的使用方法基础篇
  20. 重命名 VMware ESX 主机

热门文章

  1. 【趣话编程】如果张东升是个程序员
  2. 分享实录 | 单人开发场景下的测试环境实践
  3. .NET Core 实例接口代理转发
  4. PHP学习笔记:php二手交易市场系统
  5. seconds_behind_master监控复制推延的不足及pt-heartbeat改进方法
  6. 在echarts图表外调用echarts的下载功能以及echarts getDataURL图表数据不显示的问题的解决方案...
  7. nodeJs配置相关以及JSON.parse
  8. 推荐eclipse插件Properties Editor
  9. 2012年总结,2013年的计划
  10. 使用asp.net中的跟踪功能