用Glide-图片的压缩-图片压缩原理
前言:
这一节里面我们将介绍Glide如何对图片进行压缩,这一点在加载图片较多或者加载的图片像素很高的程序里面至关重要
Glide 系列目录
- 1.Glide-入门教程
- 2.Glide-占位图以及加载动画
- 3.Glide-加载本地图片
- 4.Glide-加载Gif
- 5.Glide-绑定生命周期
- 6.Glide-内存缓存与磁盘缓存
- 7.Glide-通过Modules定制Glide
- 8.Glide-自定义缓存
- 9.Glide-图片的压缩
- 10.Glide-图片预处理(圆角,高斯模糊等)
- 11.Glide-图片的剪裁(ScaleType)
- 12.Glide-源码详解
1.Android图片显示相关知识
这里会讲一下图片显示相关的基础知识,如果不关心的可以直接跳到第二点,不过建议是最好看一下
1.1图片质量分类
安卓图片显示的质量配置主要分为四种:
- ARGB_8888 :32位图,带透明度,每个像素占4个字节
- ARGB_4444 :16位图,带透明度,每个像素占2个字节
- RGB_565 :16位图,不带透明度,每个像素占2个字节
- ALPHA_8 :32位图,只有透明度,不带颜色,每个像素占4个字节
(A代表透明度,RGB代表红绿蓝:即颜色)
1.2图片默认质量
Picasso的默认质量是 ARGB_8888
Glide的默认质量则为 RGB_565
1.3占用内存
加载一张4000 * 2000(一般手机拍摄的都超过这个像素)的图片
Picasso需要占用的内存为: 32MB
4000 * 2000 * 4 / 1024 / 1024 = 30 (MB)
Glide需要占用的内存为: 16MB
4000 * 2000 * 2 / 1024 / 1024 = 15 (MB)
也就是说只要同时加载几张图片,你的应用就会OOM(内存溢出了),最恐怖的是就算你的ImageView的宽高只有10px,同样会占用那么多内存,这就是为什么需要做图片压缩的原因了
2.图片质量的压缩或者提高
在Glide里面默认用的是RGB_565,如果需要修改,相对于Picasso来说会更加麻烦一些,在之前的文章中,讲到过如何修改Glide的图片质量,这里就不再做介绍了
通过GlideModule定制Glide
http://blog.csdn.net/yulyu/article/details/55194237
3.图片尺寸的压缩或者拉伸(override)
通过调用override,就可以把图片压缩到相应的尺寸来显示了,类似这些被处理过的图片,就是之前文章中提到的RESULT(处理图)
Glide.with(this).load(mUrl).override(300,300).into(mIv);
注意,这里具体会压缩到什么尺寸还会根据很多条件来计算,所以最终压缩的结果的宽高会比较接近你的传值,但是不一定会完全相同,如果感兴趣的可以期待本系列后面的Glide源码解析中的具体介绍
(一般来说控件是什么尺寸就传入相应的宽高,这样是比较适合的压缩比例)
热门文章
- Glide-内存缓存与磁盘缓存
- Glide-自定义缓存
- Glide-入门教程
- Okhttputils终极封装
- FaceBook推出的调试神器
- Android代码优化工具
用Glide-图片的压缩-图片压缩原理相关推荐
- JPEG/Exif/TIFF格式解读(1):JEPG图片压缩与存储原理分析
JPEG文件简介 JPEG的全称是JointPhotographicExpertsGroup(联合图像专家小组),它是一种常用的图像存储格式, jpg/jpeg是24位的图像文件格式,也是一种高效率的 ...
- Bmob+Luban(鲁班)压缩图片实现相册选择图片压缩后上传到Bmob后台Glide加载图片显示到本地
源代码已上传CSDN:https://download.csdn.net/download/qq_16519957/11068345 因为本章需要跟前面的知识结合起来看所以就做了一个前面链接方便大家查 ...
- lrz实现原理_移动端使用localResizeIMG4压缩图片
移动h5开发避免不了上传图片,一般我们使用html自带的控件input或者使用微信上传API.但微信上传API不是任何地方都可以使用的,使用html自带的控件input上传又免不了图片体积太大,上传不 ...
- html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...
- Android LruCache 压缩图片 有效避免程序OOM
压缩加载大图片 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状.不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库里展示的图片大都是 ...
- 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )
文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...
- 掌握JS压缩图片,这一篇就够了
前言 公司的移动端业务需要在用户上传图片是由前端压缩图片大小,再上传到服务器,这样可以减少移动端上行流量,减少用户上传等待时长,优化用户体验. 插播一下,本文案例已整理成插件,已上传 npm ,可通过 ...
- 压缩图片和改变图片图形
压缩图片和改变图片图形 GitHub网址:https://github.com/qianshao1030/BitmapDemo 包名:compile 'jp.wasabeef:glide-transf ...
- Android压缩图片到100K以下并保持不失真的高效方法
在开发Android企业应用时,会经常上传图片到服务器,而我们公司目前维护的一个项目便是如此.该项目是通过私有apn与服务器进行交互的,联通的还好,但移动的速度实在太慢,客户在使用软件的过程中,由于上 ...
- 【厚积薄发】Crunch压缩图片的AssetBundle打包
这是第133篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间10分钟,认真读完必有收获. UWA 问答社区:answer.uwa4d.com UWA QQ群 ...
最新文章
- iOS 流式播放音频文件
- maven 如何看jar是否被修改_如何在线修改jar文件
- ObjectARX_图形数据库
- NI FlexLogger 2020 R3中文版
- win32汇编创建线程简单Demo
- golang+数据库定时任务
- MySql :Could not create connection to database server.
- java不规则算法_分布式id生成算法 snowflake 详解
- 调试方法和技巧(zz)
- pythonserial函数_python3.5 中serial模块的问题
- 好好学习 天天编程—C语言之我的第一个hello world(二)
- [转载] Python机器学习库scikit-learn使用小结(二)
- 10000以内的素数。
- python高级篇----网络编程与爬虫
- [arduino]红外接收测试工装
- vscode设置不显示某些文件或文件夹
- 我招聘了一名程序员,试用期都过了,结果发现他学历是假的...
- rust进水器怎么用_净水器的使用方法和注意事项
- 第二次使用Arduino MKR WiFi 1010做服务器
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对