Android Bitmap图片优化分析
原文地址:https://juejin.im/post/6844904166138069005
图片在移动开发中占据中举足轻重的地位,早期的android 应用页面Ui相对简单,但随着Android系统不断的升级发展, 界面元素越来越丰富,用户对体验要求越来越高,UI小姐姐们需要设计出精致的界面元素,其中不乏很多好看的图片,但是随着手机性能提升(分辨率,cpu主频,内存等),图片质量也越来越大,拍个照动不动就3M,4M,8M, 大家都知道,android 应用在创建进程时候,会分配一个指定的内存大小,准确的说话是 google原生OS的默认值是16M,但是各个厂家的系统会对这个值进行修改,如果我们应用“毫不吝啬”将这些大图直接加载到内存中,很快内存就会耗尽,最终出现OOM异常,所以图片的处理对于一个稳定、用户体验友好的应用来说非常重要,今天我们就来聊一聊Bitmap,在开发过程中把”图片“给优化一番,保证我们项目在线上稳定、流畅运行。
Bitmap 初识
Bitmap图像处理的最重要类之一,用它可以获取图像文件信息,进行图像颜色变换、剪切、旋转、缩放等操作,并可以指定格式保存图像文件。
如图,bitmap在sdk中算是元老级的人物了,从api1中就已经有了,可见其重要性。
继承关系就不解释了,实现了Parcelable 具备在内存中传递的特性。
bitmap中有两个重要的内部类 CompressFormat 以及 Config;
下面分别介绍一下这两个类
CompressFormat
CompressFormat 是用来设置压缩方式的,是个枚举类,内部提供了三种图片压缩方式类型,JPEG : 表示Bitmap采用JPEG压缩算法进行压缩,压缩后的格式可以是.jpg或者.png,是一种有损压缩方式。PNG : 表示Bitmap采用PNG压缩算法进行压缩,压缩后的格式可以是.png,是一种无损压缩方式。WEBP :表示以WebP压缩算法进行图像压缩,压缩后的格式可以是".webp",是一种有损压缩,质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%,美中不足的是,WebP格式图像的编码时间“比JPEG格式图像长8倍”, 而且还需要注意,在官方文档中有这样的描述:As of Build.VERSION_CODES.Q, a value of 100 results in a file in the lossless WEBP format. Otherwise the file will be in the lossy WEBP format. 意为Android10之后如果quality值(压缩质量)为100的话,bitmap压缩采用无损压缩格式,其他都为有损压缩;这里有的同志会问,这都是压缩格式啊,具体怎么操作压缩呢,Bitmap为我们提供了一个可靠的方法供开发者使用,我们来顺便看看Bitmap都有什么方法,如下:
第一个方法就是compress()方法, 没错就是这么就这方法,一共有三个参数
1、format :
Android Bitmap图片优化分析相关推荐
- Android性能优化系列之Bitmap图片优化
在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎,就容易造成OOM(Java.lang.OutofMemoryError - 内存溢出),本篇博客,我们将 ...
- android 多图片优化工具,总结Android App内存优化之图片优化
前言 在Android设备内存动不动就上G的情况下,的确没有必要去太在意APP对Android系统内存的消耗,但在实际工作中我做的是教育类的小学APP,APP中的按钮.背景.动画变换基本上全是图片,在 ...
- Android中图片压缩分析(上)
此文章首发:https://mp.weixin.qq.com/s/QZ-XTsO7WnNvpnbr3DWQmg 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种: ...
- Android BitMap图片压缩
最近在网上看了一些关于图片压缩的博客,自己也动手实验了一遍,也算事对图片压缩有了一个了解,打算写个博客记录一下.文末附上参考链接. Android中涉及到图片的话一般都会用到BitMap类和Bitma ...
- Android卡顿优化分析
本篇包含的主要内容如下所示: 1.卡顿优化分析方法与工具 2.自动化卡顿检测方案及优化 在某个 App 的时候,有时我们会看到某个 App 运行起来,即出现了卡现象,如何去定义发生了卡现象呢?马上来了 ...
- Android Bitmap图像优化
试一试:点击下载. 在Android应用开发中不可避免的会用到图形图像,这样就会生成Bitmap对象.如果在开发过程中没有处理好Bitmap对象就很容易产生Out Of Memory(OOM)的异常. ...
- Android bitmap图片处理
一.View转换为Bitmap 在Android中所有的控件都是View的直接子类或者间接子类,通过它们可以组成丰富的UI界面.在窗口显示的时候Android会把这些控件都加载到内存中 ...
- Android—Bitmap图片大小计算、压缩与三级缓存
Bitmap对象占用内存大小: bitmap.getByteCount() 图片所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数. Android Bitmap使用的三种颜色格 ...
- Android中图片优化之webp使用
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 有关图片的优化,通常我们会用到LruCache(使用强引用.强 ...
最新文章
- 今天做项目时,用到了好多关于js的知识点,有的忘记了,然后晚上回来自己整理一番,明天继续整理。哈哈,分享给大家。...
- Extensible Messaging and Presence Protocol (XMPP): Core
- Android :数据库
- win10家庭版远程桌面连接出现身份验证错误
- hdu-4811 Ball
- Java 接口(interface)的用途和好处
- new / delete与malloc / free的异同及实现原理
- 【渝粤教育】国家开放大学2018年秋季 0266-22T设计构成 参考试题
- BugkuCTF-MISC题Photo的自我
- C++:VS2019遇到C1083 无法打开包括文件: “opencv2/opencv.hpp”: No such file or directory
- php 子进程_PHP 多进程入门
- oracle 10gchuanjianyonghu,管理Oracle 10g Dataguard归档缺口问题
- Qt工程pro文件的简单配置(尤其是第三方头文件和库)
- python环境下数据操作_在windows环境下使用Python操作spatialite数据库
- PMP项目管理全套表格史上最全,建议收藏
- 怎么查二手华为手机价格
- 英语单词常见后缀词性
- vue axio的使用
- 为什么我卸载了微博?
- 7、osg中响应键盘鼠标事件以及鼠标和键盘编码表