原文地址: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图片优化分析相关推荐

  1. Android性能优化系列之Bitmap图片优化

    在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎,就容易造成OOM(Java.lang.OutofMemoryError - 内存溢出),本篇博客,我们将 ...

  2. android 多图片优化工具,总结Android App内存优化之图片优化

    前言 在Android设备内存动不动就上G的情况下,的确没有必要去太在意APP对Android系统内存的消耗,但在实际工作中我做的是教育类的小学APP,APP中的按钮.背景.动画变换基本上全是图片,在 ...

  3. Android中图片压缩分析(上)

    此文章首发:https://mp.weixin.qq.com/s/QZ-XTsO7WnNvpnbr3DWQmg 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种: ...

  4. Android BitMap图片压缩

    最近在网上看了一些关于图片压缩的博客,自己也动手实验了一遍,也算事对图片压缩有了一个了解,打算写个博客记录一下.文末附上参考链接. Android中涉及到图片的话一般都会用到BitMap类和Bitma ...

  5. Android卡顿优化分析

    本篇包含的主要内容如下所示: 1.卡顿优化分析方法与工具 2.自动化卡顿检测方案及优化 在某个 App 的时候,有时我们会看到某个 App 运行起来,即出现了卡现象,如何去定义发生了卡现象呢?马上来了 ...

  6. Android Bitmap图像优化

    试一试:点击下载. 在Android应用开发中不可避免的会用到图形图像,这样就会生成Bitmap对象.如果在开发过程中没有处理好Bitmap对象就很容易产生Out Of Memory(OOM)的异常. ...

  7. Android bitmap图片处理

    一.View转换为Bitmap         在Android中所有的控件都是View的直接子类或者间接子类,通过它们可以组成丰富的UI界面.在窗口显示的时候Android会把这些控件都加载到内存中 ...

  8. Android—Bitmap图片大小计算、压缩与三级缓存

    Bitmap对象占用内存大小: bitmap.getByteCount() 图片所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数. Android Bitmap使用的三种颜色格 ...

  9. Android中图片优化之webp使用

    博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 有关图片的优化,通常我们会用到LruCache(使用强引用.强 ...

最新文章

  1. 今天做项目时,用到了好多关于js的知识点,有的忘记了,然后晚上回来自己整理一番,明天继续整理。哈哈,分享给大家。...
  2. Extensible Messaging and Presence Protocol (XMPP): Core
  3. Android :数据库
  4. win10家庭版远程桌面连接出现身份验证错误
  5. hdu-4811 Ball
  6. Java 接口(interface)的用途和好处
  7. new / delete与malloc / free的异同及实现原理
  8. 【渝粤教育】国家开放大学2018年秋季 0266-22T设计构成 参考试题
  9. BugkuCTF-MISC题Photo的自我
  10. C++:VS2019遇到C1083 无法打开包括文件: “opencv2/opencv.hpp”: No such file or directory
  11. php 子进程_PHP 多进程入门
  12. oracle 10gchuanjianyonghu,管理Oracle 10g Dataguard归档缺口问题
  13. Qt工程pro文件的简单配置(尤其是第三方头文件和库)
  14. python环境下数据操作_在windows环境下使用Python操作spatialite数据库
  15. PMP项目管理全套表格史上最全,建议收藏
  16. 怎么查二手华为手机价格
  17. 英语单词常见后缀词性
  18. vue axio的使用
  19. 为什么我卸载了微博?
  20. 7、osg中响应键盘鼠标事件以及鼠标和键盘编码表

热门文章

  1. PS教程——复古人物海报效果
  2. 外汇交易中的Abook和Bbook(来源数汇经财)
  3. eclipse 中 git 与 svn 共存
  4. 非规格化浮点数表示范围
  5. 面向对象之继承,抽象类、模板设计模式
  6. Pycharm 更改字体与颜色主题
  7. 跨境电商卖家必知的【圣诞节营销】终极指南(一)
  8. 一个码农去日本做牛郎 ,然后...
  9. 个人、企业上云,双十二赚钱攻略
  10. emboss 安装使用