Android-Daily-Interview icon indicating copy to clipboard operation
Android-Daily-Interview copied to clipboard

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

Open Moosphan opened this issue 6 years ago • 15 comments

Moosphan avatar Jun 05 '19 01:06 Moosphan

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

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

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

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

zhaoerlei1989 avatar Jun 05 '19 01:06 zhaoerlei1989

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

gabyallen avatar Jun 05 '19 01:06 gabyallen

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

yangfanggang avatar Jun 05 '19 08:06 yangfanggang

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

kngLv avatar Jun 05 '19 12:06 kngLv

图片压缩:

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

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

Omooo avatar Jun 10 '19 07:06 Omooo

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

yline avatar Jan 09 '20 09:01 yline

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

manondidi avatar Jan 09 '20 10:01 manondidi

https://juejin.im/entry/5e76df8a518825490b64a506

fuusy avatar Mar 30 '20 14:03 fuusy

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

zizikoth avatar Apr 16 '20 03:04 zizikoth

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

mlinqirong avatar Dec 24 '21 08:12 mlinqirong

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

buyiyun avatar Oct 07 '22 14:10 buyiyun

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

wyvector avatar Oct 25 '23 09:10 wyvector

这是来自QQ邮箱的假期自动回复邮件。  

luckilyyg avatar Oct 25 '23 09:10 luckilyyg

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。

Empty0Qc avatar Oct 25 '23 09:10 Empty0Qc

简单图像用svg

b1tb1t avatar Jan 25 '24 03:01 b1tb1t