简介:最近在做图片上传的相关功能,需要对图片的大小和尺寸进行压缩处理。

好处:(1)提升性能(2)节省流量

一、图片大小循环压缩

/*** 压缩图片文件到指定大小** @param filePath*/public static void compressBmpToFile(String filePath) {Bitmap bitmap = BitmapFactory.decodeFile(filePath);if (null == bitmap) {return;}final int BYTE_LEN = 1024;//文件最大为200KBfinal int MAX_FILE_SIZE = 256;final ByteArrayOutputStream baos = new ByteArrayOutputStream();int quality = 90;bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos);while (baos.toByteArray().length / BYTE_LEN > MAX_FILE_SIZE) {baos.reset();quality -= 10;bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos);float size = calculteBitmapSize(bitmap);}try {final FileOutputStream fos = new FileOutputStream(new File(filePath));fos.write(baos.toByteArray());fos.flush();fos.close();} catch (Exception e) {e.printStackTrace();}}
/*** 计算bitmap的大小** @param bitmap* @return bitmap的大小单位KB*/public static float calculteBitmapSize(Bitmap bitmap) {if (null == bitmap) {return 0.0f;}final ByteArrayOutputStream baos = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);final float size = (baos.toByteArray().length / 1024);try {baos.close();} catch (IOException e) {e.printStackTrace();}return size;}

二、图片尺寸压缩

/*** 压缩图片的尺寸** @param srcPath* @return*/public static Bitmap compressImageFromFile(String srcPath) {final BitmapFactory.Options newOpts = new BitmapFactory.Options();//只读边,不读内容newOpts.inJustDecodeBounds = true;// 获取这个图片的宽和高,注意此处的bitmap为nullBitmapFactory.decodeFile(srcPath, newOpts);newOpts.inJustDecodeBounds = false;int w = newOpts.outWidth;int h = newOpts.outHeight;float hh = 800f;float ww = 480f;int be = 1;if (w > h && w > ww) {be = (int) (newOpts.outWidth / ww);} else if (w < h && h > hh) {be = (int) (newOpts.outHeight / hh);}if (be <= 0) {be = 1;}//设置采样率newOpts.inSampleSize = be;//该模式是默认的,可不设newOpts.inPreferredConfig = Bitmap.Config.RGB_565;// 同时设置才会有效newOpts.inPurgeable = true;//当系统内存不够时候图片自动被回收newOpts.inInputShareable = true;final Bitmap bitmap = BitmapFactory.decodeFile(srcPath, newOpts);return bitmap;}

三、Luban压缩

Github:Luban图片压缩

四、图片选择器

PictureSelector图片选择器

Android图片压缩—可按照图片大小压缩相关推荐

  1. android设置图片亮度分10档,批处理图片同时调整图片亮度批处理图的大小压缩图片裁边(6页)-原创力文档...

    使用Microsoft Office Picture Manager的最大好处是可以批处理文件:可同时处理一批图片的亮度.对比度.调整尺寸大小(压缩图片).旋转图片等,一气呵成. 批处理图片实例操作: ...

  2. Linux按压缩率大小排序,Linux下常用压缩 解压命令与压缩比率对比

    常用的格式有: tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar 只是打包动作,相当于归档处理,不做压缩:解压也一样 ...

  3. Linux按压缩率大小排序,Linux下经常使用压缩 解压命令和压缩比率对比

    经常使用的格式有: tar, tar.gz(tgz), tar.bz2, 算法 不一样方式,压缩和解压方式所耗CPU时间和压缩比率也差别也比较大.测试 1. tar 只是打包动做,至关于归档处理,不作 ...

  4. Linux下常用压缩 解压命令和压缩比率对比

    https://www.cnblogs.com/joshua317/p/6170839.html Linux下常用压缩 解压命令和压缩比率对比 常用的格式有: tar, tar.gz(tgz), ta ...

  5. linux gz文件压缩比,浅谈Linux下各种压缩 解压命令和压缩比率对比.doc

    浅谈Linux下各种压缩 解压命令和压缩比率对比 浅谈Linux下各种压缩 解压命令和压缩比率对比 Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的. ...

  6. 【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )

    文章目录 一. 图片质量压缩 二. 图片尺寸压缩 三. Android 10 文件访问 四. 完整源码示例 上一篇博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供 ...

  7. 【Android 内存优化】图片文件压缩 ( Android 原生 API 提供的图片压缩功能能 | 图片质量压缩 | 图片尺寸压缩 )

    文章目录 一. 图片压缩 二. 图片文件压缩类型 三. Android 原生 API 提供的质量压缩 四. Android 原生 API 提供的尺寸压缩 一. 图片压缩 图片压缩 : ① 文件压缩 : ...

  8. android uri图片压缩,详解android 通过uri获取bitmap图片并压缩

    详解android 通过uri获取bitmap图片并压缩 很多人在调用图库选择图片时会在onactivityresult中用media.getbitmap来获取返回的图片,如下: uri mimage ...

  9. Android 图片选择和拍照(剪辑)及压缩问题 工具类

    图片选择和拍照在开发过程中,会遇到不少坑: 1.版本4.4以后选择图片后不会返回绝对路径,但返回Uri,要再查询一次 2.去剪辑时,设置了true的话直接返回bitmap,可能会很占内存,有些机子会挂 ...

最新文章

  1. replace 使用函数作为第二参数
  2. 「AI初识境」近20年深度学习在图像领域的重要进展节点
  3. php生成格式 word文档,php使用phpword生成word文档
  4. 面试精讲之面试考点及大厂真题 - 分布式专栏 21 限流不能乱用-系统限流最佳实践
  5. 诗与远方:无题(三十七)- 凿壁偷光
  6. 自行搭建嵌入式持续集成工具:从0到1
  7. 【TDS学习文档5】IBM Directory schema的管理3——attributes
  8. crate和mysql结合利用_create和grant配合使用,对Mysql进行创建用户和对用户授权
  9. get请求500_050 Servlet的请求req与响应resp
  10. 内定抽奖小程序_excel怎么制作抽奖小程序?
  11. 学习iOS从object-c开始-语法(一)
  12. qq空间登录(采用cookie纪录+广度搜索BFS)
  13. 基于单片机的空气质量监测系统设计
  14. WinTel联盟发展史
  15. 计算机与代数---如何计算log---方法推理[1]
  16. Magic-api介绍及使用
  17. LLVM IR / LLVM指令集入门
  18. 如何编写爬虫获取淘宝网上所有的商品分类以及关键属性 销售属性 非关键属性数据
  19. 理论+股市数据实战,总结了五种常用聚类分析算法
  20. GD32,在电源电路VDD VDDA VREF+/-参考设计

热门文章

  1. 网络爬虫之网页排重:语义指纹
  2. android-app-脱壳-实战-操作步骤
  3. 开工大吉丨新的一年更要奋发“兔”强~
  4. 视频教程-基于HyperMesh的钢筋混凝土网格处理-其他
  5. 修改mysql 表字段
  6. 从洞察到决策,一文解读标签画像体系建设方法论
  7. Git:将git代码强制覆盖本地代码
  8. 2017江西高考计算机,2017年江西省计算机高考考试说明.doc
  9. 正则之match方法详解
  10. Unity_DoTween_制作图标上下跳动小动画