Android图片压缩—可按照图片大小压缩
简介:最近在做图片上传的相关功能,需要对图片的大小和尺寸进行压缩处理。
好处:(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图片压缩—可按照图片大小压缩相关推荐
- android设置图片亮度分10档,批处理图片同时调整图片亮度批处理图的大小压缩图片裁边(6页)-原创力文档...
使用Microsoft Office Picture Manager的最大好处是可以批处理文件:可同时处理一批图片的亮度.对比度.调整尺寸大小(压缩图片).旋转图片等,一气呵成. 批处理图片实例操作: ...
- Linux按压缩率大小排序,Linux下常用压缩 解压命令与压缩比率对比
常用的格式有: tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar 只是打包动作,相当于归档处理,不做压缩:解压也一样 ...
- Linux按压缩率大小排序,Linux下经常使用压缩 解压命令和压缩比率对比
经常使用的格式有: tar, tar.gz(tgz), tar.bz2, 算法 不一样方式,压缩和解压方式所耗CPU时间和压缩比率也差别也比较大.测试 1. tar 只是打包动做,至关于归档处理,不作 ...
- Linux下常用压缩 解压命令和压缩比率对比
https://www.cnblogs.com/joshua317/p/6170839.html Linux下常用压缩 解压命令和压缩比率对比 常用的格式有: tar, tar.gz(tgz), ta ...
- linux gz文件压缩比,浅谈Linux下各种压缩 解压命令和压缩比率对比.doc
浅谈Linux下各种压缩 解压命令和压缩比率对比 浅谈Linux下各种压缩 解压命令和压缩比率对比 Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的. ...
- 【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )
文章目录 一. 图片质量压缩 二. 图片尺寸压缩 三. Android 10 文件访问 四. 完整源码示例 上一篇博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供 ...
- 【Android 内存优化】图片文件压缩 ( Android 原生 API 提供的图片压缩功能能 | 图片质量压缩 | 图片尺寸压缩 )
文章目录 一. 图片压缩 二. 图片文件压缩类型 三. Android 原生 API 提供的质量压缩 四. Android 原生 API 提供的尺寸压缩 一. 图片压缩 图片压缩 : ① 文件压缩 : ...
- android uri图片压缩,详解android 通过uri获取bitmap图片并压缩
详解android 通过uri获取bitmap图片并压缩 很多人在调用图库选择图片时会在onactivityresult中用media.getbitmap来获取返回的图片,如下: uri mimage ...
- Android 图片选择和拍照(剪辑)及压缩问题 工具类
图片选择和拍照在开发过程中,会遇到不少坑: 1.版本4.4以后选择图片后不会返回绝对路径,但返回Uri,要再查询一次 2.去剪辑时,设置了true的话直接返回bitmap,可能会很占内存,有些机子会挂 ...
最新文章
- replace 使用函数作为第二参数
- 「AI初识境」近20年深度学习在图像领域的重要进展节点
- php生成格式 word文档,php使用phpword生成word文档
- 面试精讲之面试考点及大厂真题 - 分布式专栏 21 限流不能乱用-系统限流最佳实践
- 诗与远方:无题(三十七)- 凿壁偷光
- 自行搭建嵌入式持续集成工具:从0到1
- 【TDS学习文档5】IBM Directory schema的管理3——attributes
- crate和mysql结合利用_create和grant配合使用,对Mysql进行创建用户和对用户授权
- get请求500_050 Servlet的请求req与响应resp
- 内定抽奖小程序_excel怎么制作抽奖小程序?
- 学习iOS从object-c开始-语法(一)
- qq空间登录(采用cookie纪录+广度搜索BFS)
- 基于单片机的空气质量监测系统设计
- WinTel联盟发展史
- 计算机与代数---如何计算log---方法推理[1]
- Magic-api介绍及使用
- LLVM IR / LLVM指令集入门
- 如何编写爬虫获取淘宝网上所有的商品分类以及关键属性 销售属性 非关键属性数据
- 理论+股市数据实战,总结了五种常用聚类分析算法
- GD32,在电源电路VDD VDDA VREF+/-参考设计