「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」。
👉关于作者
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
欢迎关注公众号【空名先生】获取更多资源和交流!
👉前提
前面小空坚持写的Android新手向系列,欢迎品尝。
在前面文章中我们学习了布局优化内容,今天我们再说一说图片优化的快哉江湖!!!
承接上一篇。
👉实践过程
小空先来带大家看几个概念
😜图片存在的几种形式
File形式,即存在于我们的磁盘中,我们通常说的图片大小也就是这个大小。
Stream就是流的形式,比如我们浏览的各种网络图片,都是实时加载的。
Bitmap形式,就是我们通常指内存中图片的大小,同一张图片处理不好在不同设备会占用不同的内存大小。
像素密度
像素密度是指设备每英寸像素的数目,这个和资源文件里面的mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi密不可分。
色彩模式
它是一种算法形式,是在虚拟世界里表示颜色的,她有多个模式,Android中我们尝尝在Bitmap中使用,而且多是Config来设置,但具体每个都代表什么意思呢。
Alpha_8:只存储了位图的透明度,没有颜色信息,每个像素都需要1个字节的内存来存储信息。
ARGB_4444:每个4都是有意义的,4个4即ARGB,A(Alpha)4位的精度,R(Red)4位的精度,G(Green)4位的精度,B(Blue)4位的精度,也就是一个像素会占用两个字节内存来存储,而且存储了图片的透明度和颜色信息。属于质量较低的配置。
ARGB_8888:这个类型ARGB_4444的原理基本一致的,只是A,R,G,B各占8个位的精度,所以一个像素占4个字节的内存。占的多了用的空间也多了,自然能显示的内容也就多了,因此改类型的位图质量较好,一般情况下默认使用这个,同时也是推荐的配置。
RGB_565:经过上面的介绍,大概猜到565说的是谁了,没错:R占5位精度,G占6位精度,B占5位精度,一共是16位精度,算下来是两个字节的内容。不过这个因为没有A(Alpha),所以是不支持透明度信息的,如果对图片要求苛刻且没有透明度,相比ARGB_8888是个更不错的选择
😜什么是质量压缩?
质量压缩通常是不改变尺寸的情况下进行像素质量压缩,肉眼可能难辨,但是进行放大对比就能对比出差异。这种压缩形式会改变图片在硬盘存储中的大小(也就是File文件的大小),对于内存中的大小影响,作用很小。
原理是:主要实现手段是通过算法将某个像素点周围的像素进行处理同化,将像素降低质量或减少,进而达到压缩的目的,同时也改变了文件大小。另外PNG虽然是无损格式的,但仍然可处理,只不过效果小,得不到理想程度,一般都是针对JPG格式图片处理。
应用场景:图片的上传下载。
😜什么是尺寸压缩?
图片的尺寸压缩是指:按照一定的倍数对图片减少单位尺寸的像素值,本来1个单位有6个像素点,压缩后1个单位有2个像素点,不仅可以改变图片在内存中的大小,也会改变图片在硬盘中的大小。
这个最容易理解了,就像现实三维世界一样,普遍情况下尺寸越小的东西重量越轻。
原理是:通过减少单位尺寸的像素值,真正意义上的降低像素值。
应用场景:用户头像的缩略图,聊天过程中的缩略图等。
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)
📢欢迎点赞👍收藏🌟留言📝