Android修行手册-基础优化系列图片篇,ios音视频面试内容

这篇具有很好参考价值的文章主要介绍了Android修行手册-基础优化系列图片篇,ios音视频面试内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图片款=(480/480)*400=400

占用内存为300*400*4=480000

那么它占用内存为什么是变化的?

Android会先解析图片文件本身的数据格式,然后还原成Bitmap对象,Bitmap的大小就跟上面的计算方式相关联。

再举例1080*452的png图片,图片占用存储空间大小为56kb,内存如图:

Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试

上图一目了然,不同状态下,占用内存不一样,想明白这点是很重要的,一个应用可能有上百张图片,小到几B大到几MB,很容易占用大量内存。

所以,对应的设计图,对应的切图放在对应的文件夹很重要,否则一不小心就得炸裂。

😜图片存在的几种形式

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个像素点,不仅可以改变图片在内存中的大小,也会改变图片在硬盘中的大小。

这个最容易理解了,就像现实三维世界一样,普遍情况下尺寸越小的东西重量越轻。

原理是:通过减少单位尺寸的像素值,真正意义上的降低像素值。

应用场景:用户头像的缩略图,聊天过程中的缩略图等。

😜经验

首先推荐给大家一个压缩网站https://tinypng.com/

一般做过图片优化的可能都知道这个网站,毕竟一搜索这家伙就排在搜索引擎第一位,但Android开发新手可能没了解过。

这个网站压缩图片非常非常的棒,它压缩的是原始文件,压缩后即使你放大,从视觉上基本也看不出什么差别,屌爆了,OMG的,用它。

我已经养成习惯,用图片前一般都会压缩。它是有客户端的,界面如下。

Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试

接着回到我们Android技术,官方有个BitmapFactory类,提供了很多解析方法

Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试

decodeStream方法一般出来从网络过来的图片,

decodeFile方法可以搞sd卡里面的图片

decodeResource方法处理资源文件里面的图片。

这些方法会为创建的Bitmap分配内存,如果图片过大的话就会导致 OOM。

看上面图片的注释BitmapFactory.Options提供了一个参数inSampleSize,可以帮助实现压缩。

看个例子:

假设我们有个6666*6666辣么大的图,设置了inSampleSize为6,那么加载到内存中的就是1111*1111像素的图,宽高各是原来的1/6,那所占用的空间理论上应该是1/36。

注意:inSampleSize的值需要是2的倍数,小于1则默认为1,如果是奇数则默认减1

实现尺寸压缩:

Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试

质量压缩无法避免oom,但可以改变图片在磁盘中或者说是File文件的大小,尺寸压缩可以避免OOM,但不改变图片本身的大小,只改变加载是在内存中的大小,即bitmap。

讲完整体压缩,我们再来介绍另一个场景:手机一屏显示不小的超大图!!

比如:3840*2160的高清壁纸。

上面的压缩方案肯定导致图看不清,体验极差。

所以我们就得采用局部显示来展示图片。

Android为我们提供了一个类:BitmapRegionDecoder来局部展示图片的,它能后实现展示图片的指定区域。

  1. BitmapRegionDecoder提供了一系列的newInstance来进行初始化,支持传入文件路径,文件描述符和文件流InputStream等

  2. 之后借助decodeRegion方法来指定显示的区域。

  3. 最后再加上一些手势操作即可。

文章鸿洋大神已经有教程了,在此不赘述。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试
Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试
Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试
Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试
Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试
Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试
Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试

学习分享

在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了

很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘

如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。

2021最新上万页的大厂面试真题

Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试

七大模块学习资料:如NDK模块开发、Android框架体系架构…

Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试

只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。

这份体系学习笔记,适应人群:
**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。
**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。
**第三,**到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。

由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Android修行手册-基础优化系列图片篇,ios音视频面试内容,2024年程序员学习,android,音视频,面试
线与进阶方向。

**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。
**第三,**到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。

由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-NHyayC3f-1712689619487)]文章来源地址https://www.toymoban.com/news/detail-859641.html

到了这里,关于Android修行手册-基础优化系列图片篇,ios音视频面试内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android修行手册-多路USB外接摄像头

    点击跳转=Unity3D特效百例 点击跳转=案例项目实战源码 点击跳转=游戏脚本-辅助自动化 点击跳转=Android控件全解手册 点击跳转=Scratch编程案例 点击跳转=软考全系列 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、工具、素材、源码、游戏等) 有什么需要欢

    2024年02月07日
    浏览(40)
  • Android修行手册 - 使用ViewPager2实现画廊效果

    Unity3D特效百例 案例项目实战源码 Android-Unity实战问题汇总 游戏脚本-辅助自动化 Android控件全解手册 再战Android系列 Scratch编程案例 软考全系列 Unity3D学习专栏 蓝桥系列 ChatGPT和AIGC 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、工具、素材、源码、游戏等

    2024年02月22日
    浏览(33)
  • Android修行手册 - 阴影效果的几种实现以及一些特别注意点

    Unity3D特效百例 案例项目实战源码 Android-Unity实战问题汇总 游戏脚本-辅助自动化 Android控件全解手册 再战Android系列 Scratch编程案例 软考全系列 Unity3D学习专栏 蓝桥系列 ChatGPT和AIGC 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、工具、素材、源码、游戏等

    2024年04月10日
    浏览(30)
  • Android修行手册 - 文档插件Aspose的jar包去除所有限制学习版

    专栏分享 点击跳转=Unity3D特效百例 点击跳转=案例项目实战源码 点击跳转=游戏脚本-辅助自动化 点击跳转=Android控件全解手册 点击跳转=Scratch编程案例 众所周知,人生是一个漫长的流程,不断 克服困难 ,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考

    2024年02月13日
    浏览(27)
  • Android性能优化系列-腾讯matrix-IO监控-IOCanaryPlugin源码分析

    作者:秋去无痕 matrix 对io的监控包括四个方面 监控在主线程执行 IO 操作的问题 监控缓冲区过小的问题 监控重复读同一文件 监控内存泄漏问题 IOCanaryPlugin,内部由IOCanaryCore完成真正的操作。 根据配置进行hook的安装 取消hook 底层hook安装包函几个步骤,加载so,设置hook内容,

    2024年02月09日
    浏览(65)
  • Android音视频学习系列(九) — Android端实现rtmp推流

    Android音视频学习系列(一) — JNI从入门到精通 Android音视频学习系列(二) — 交叉编译动态库、静态库的入门 Android音视频学习系列(三) — Shell脚本入门 Android音视频学习系列(四) — 一键编译32/64位FFmpeg4.2.2 Android音视频学习系列(五) — 掌握音频基础知识并使用AudioTrack、OpenSL ES渲

    2024年02月09日
    浏览(32)
  • Android-音视频学习系列-(九)Android-端实现-rtmp-推流

    视频画面的采集主要是使用各个平台提供的摄像头 API 来实现的,在为摄像头设置了合适的参数之后,将摄像头实时采集的视频帧渲染到屏幕上提供给用户预览,然后将该视频帧传递给编码通道,进行编码。 1. 权限配置 2. 打开摄像头 2.1 检查摄像头 public static void checkCameraSe

    2024年04月12日
    浏览(36)
  • Android-音视频学习系列-(九)Android-端实现-rtmp-推流(2)

    配置好之后,检查一下 AudioRecord 当前的状态是否可以进行录制,可以通过 AudioRecord##getState 来获取当前的状态: STATE_UNINITIALIZED 还没有初始化,或者初始化失败了 STATE_INITIALIZED 已经初始化成功了。 2. 开启采集 创建好 AudioRecord 之后,就可以开启音频数据的采集了,可以通过调

    2024年04月12日
    浏览(40)
  • 音视频开发系列(6)——全面了解Android MediaFormat

    MediaFormat 是 Android 平台中用于描述音视频格式的类,它提供了许多 API 用于设置和获取音视频的格式信息。以下是 MediaFormat 类的主要 API: 用于创建音频和视频格式的 MediaFormat 对象。需要指定媒体类型(例如 audio/mp4a-latm 或 video/avc)、媒体的采样率、通道数、码率、帧率等信

    2024年02月01日
    浏览(29)
  • 【c++修行之路】IO流架构及使用

    大家好久不见,今天一起来学习c++中的IO流。 这两张架构图略显复杂,这里给出一张比较清楚的IO流架构图: 也就是说,我们平时使用的诸如cin、cout、cerr、clog都是来自 iostream 这个头文件下的,他们分别是 istream 头文件下的istream和ostream的实例对象。 istream 头文件里的iostre

    2024年02月16日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包