文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android性能优化(六)图片压缩

2022-06-06 13:11

关注

一、压缩图片 文件压缩——内存压缩 二、文件压缩方式

1.质量压缩  

2.尺寸压缩  

3.格式选择:JPEG/WEBP (4.0以上)

三、压缩原理

/frameworks/base/core/jni/android/graphics/Bitmap.cpp

Skia引擎

https://skia.org/index_zh

Google 研发、开源的C++二维图形库 

Android:

  阉割的skia版本,对jpeg的处理基于libjpeg,对png则是基于libpng。

  早期由于cpu吃紧。将libjpeg中的最优哈夫曼编码关闭了。直到7.0才打开

四、哈夫曼编码

一种字符编码方式,常用于数据文件压缩。压缩率通常在20%~90%。

主要思想:

  采取可变长编码方式,对文件中出现次数多的字符采取比较短的编码,对于出现次数少的字符采取比较长的编码,可以有效地减小总的编码长度。

      颜色

      红

      黄

    蓝

    绿

    白

一张图片占比

    9

       1

    0

    0

    0 

     定长编码

     000

       001

    010

   011

   111

   变长哈夫曼

     0

        01

     110

    011

   111

五、LibJpeg-turbo 

C语言编写的JPEG编解码库。

1. NDK

https://developer.android.google.cn/ndk/index.html

Android Native Development Kit

一套允许使用原生代码语言C/C++,实现部分应用的工具集。

 C/C++与Java通过JNI交互

2. LibJpeg使用步骤

下载 -> 编译支持Android CPU架构的库 -> As集成 ->编码

3. 下载:

https://libjpeg-turbo.org/

4. 编译:

https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md

5. 步骤:

1、生成configure(只需执行一次)

  如果生成x86架构的库需要NASM/YASM工具(armeabi不需要)

  sudo apt-get install libtool

  autoreconf -ivf

2、根据BUILDING.md 编写并执行脚本

  build.sh

8. AS集成:

9. 编码 

  参考 build.sh中的 --prefix 配置的目录下的

  share/doc/libjpeg-turbo/example.c 中的write_JPEG_file函数 

10. 使用

  参考 build.sh中的 --prefix 配置的目录下的

  share/doc/libjpeg-turbo/example.c 中的write_JPEG_file函数 

11. Bitmap使用Libjepg步骤

  1、获得待压缩Bitmap

  2、获得Bitmap中像素数据(ARGB->BGR)

  3、Libjpeg压缩

  3.1、创建jpeg压缩对象

  3.2、指定存储文件

  3.3、设置压缩参数

  3.4、开始压缩

  3.5、循环写入每一行数据

  3.6、压缩完成

  3.7、释放jpeg对象

  

资源链接:

https://download.csdn.net/download/Easyhood/12208476​​​​​​​

https://download.csdn.net/download/Easyhood/12208415​​​​​​​


作者:Easyhood


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯