Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019-06-05:Android 中的图片优化方案? #70

Open
Moosphan opened this issue Jun 5, 2019 · 15 comments
Open

2019-06-05:Android 中的图片优化方案? #70

Moosphan opened this issue Jun 5, 2019 · 15 comments

Comments

@Moosphan
Copy link
Owner

Moosphan commented Jun 5, 2019

No description provided.

@zhaoerlei1989
Copy link

首先我们可以对图片进行二次采样,从本质上减少图片的内存占用。就是将大图片缩小之后放入到内存中,以实现减小内存的目的
2.其次就是采用三层缓存架构,提高图片的访问速度。三层缓存架构是内存-文件-网络。

    内存是访问速度最快的部分但是分配的空间有限,所以不可能占用太多。其中内存缓存可以采用LRU算法(最近最少使用算法),来确定要删除内存中的那些图片,保存那   些图片。

    文件就是将图片保存到本地,可以使SD卡中,也可以是手机内部存储中。

    网络就是访问网络下载图片,进行图片的加载。
3.常见的png,JPG,webp等格式的图片在设置到UI上之前需要经过解码过程,而图片采用不同的码率,也会造成对内存的占用不同。
4.最后一点,也是图片优化最重要的一点。重用Bitmap.
5.不使用bitmap要记得实时回收,减小内存的开销

@gabyallen
Copy link

as自带压缩高清图片;
1.对于本地图片可以将.png和.jpeg格式转化为.webp格式。可以对apk进行瘦身。
2.对于网络图片,可以采用图片进行二次采样,从本质减少图片的内存占有。就是将大图片缩小之后放入到内存中,
3可以使用采用使用.svg格式;可以减少内存占用。
4.可以采用上面楼主说的,三层缓存架构,提高图片的访问速度内存+文件+网络方式。

@yangfanggang
Copy link

不懂帮顶 目前除了涉及了一点三级缓存 其他的并没有优化
路漫漫其修远兮

@LvKang-insist
Copy link

打卡,不太懂,一般使用的是 第三方库

@Omooo
Copy link

Omooo commented Jun 10, 2019

图片压缩:

  1. 对于 minAPI>19,可以将资源文件下的 png 转化为 webp(有些 png 转化为 webp 体积会变大)
  2. 利用 TinyPng 插件批量压缩资源文件下的 png 图片

图片去重:
利用 HAHA 库分析内存中的 Bitmap,找到不同模块中引入的相同的图片,这个还待实践。

@yline
Copy link

yline commented Jan 9, 2020

    1,针对长图和超大图:采用局部加载 + option的配合
    2,针对大图:设定option,增大采样率 + 减少单个像素占用的内存
    3,针对大量的图:设置cache,内存读取 -> 磁盘读取 -> 网络读取的缓存顺序
    4,其它:采用webp的文件格式,占用磁盘大小更小

@manondidi
Copy link

1.在不同的环境下采用不同的魔图规则(不同尺寸的缩略图)
2.可以考虑将图片有损转换为webp
3.可以把图片转为rgb565
4.加在大图可以考虑局部加载 防止oom
5.在application中监听内存告警的时候及时释放内存
6.及时做好图片缓存,避免每次都去网络图片取
7.做好lru缓存策略,避免一直缓存的用不到的图片
8.可把一些切图用 xml图形表示 或者.9png
9.使用tinypng对图片进行压缩
10.在gradle中配置 去除无用资源

@fuusy
Copy link

fuusy commented Mar 30, 2020

@zizikoth
Copy link

1.使用合适的图片,tinyPng进行压缩,.9图,minApi > 19的时候png转化为webp
2.图片位置的合理分配。mdpi hdpi
3.一般来说使用Glide等第三方图片加载器,了解其三级缓存,图片生命周期
4.对于只有颜色不同的图片,可以只添加一张图片使用附着色改变图片颜色,如白色箭头和灰色箭头
5.兜底策略,在合适的地方启动定时内存检测,报警时清理图片内存,页面退出及时清理不需要的图片

@mlinqirong
Copy link

mlinqirong commented Dec 24, 2021

图片优化方案
1,大小 可根据指定大小对图片宽高进行比例压缩
2,质量 可根据质量对图片进行压缩
3,缓存 使用第三方缓存
图片压缩使用第三方tiny 图片缓存使用glide

@buyiyun
Copy link

buyiyun commented Oct 7, 2022

1.去除业务已经不再使用的图片
2.图片压缩 业务敏感的做无损压缩 不敏感的可以做有损压缩
3.升级 min Sdk 转换 web
4.对大图片做在线下发

@wyvector
Copy link

推荐参考这个的处理方案:
https://blog.csdn.net/qq_34178710/article/details/130812717

@luckilyyg
Copy link

luckilyyg commented Oct 25, 2023 via email

@Empty0Qc
Copy link

Empty0Qc commented Oct 25, 2023 via email

@b1tb1t
Copy link

b1tb1t commented Jan 25, 2024

简单图像用svg

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests