Android图片加载优化方案

本文探讨了Android图片加载优化方案,包括图片压缩、上传后展示优化。研究了libjpeg-turbo和Spectrum库的压缩方式,以及Webp格式、CDN裁切预热和大图分块加载策略。通过优化,实现了图片压缩率提高,加载速度提升,解决了图片显示问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 前言

在电商APP中,图片在整个页面中占比最大,清晰高质量的图片能够明显提升转化率。但是APP运行环境错综复杂,往往我们会遇到 图片压缩导致模糊、列表加载长时间显示空白图、查看大图黑屏过久、甚至因为图片过大导致crash等,如下效果展示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

针对以上问题,我们需要:

  • 寻求合适的压缩方案,保证画质的同时,增加压缩率,提高图片上传速度和下载显示速度。
  • 排除网络波动影响下,利用CDN固定尺寸预热,统一不同分辨率机型命中预热规则,加速图片加载显示。
  • 利用清晰度分阶段加载及分块加载解决黑屏和crash。

2. 方案综述

综上问题,我们探索的方案整体流程图如下:

3. 图片上传前-图片压缩

3.1 Android常见压缩方式

在讨论压缩方案前,先让我们了解一下Android设备中一张网络图片所占用的内存大小是如何计算的

图片长度 x 图片宽度 x 一个像素点占用的字节数

一个像素点占用的字节数与图片的压缩格式有关:

  • ALPHA_8:一个像素点占用1个字节,没有颜色,只有透明度。
  • ARGB_4444:A=4位,R=4位,G=4位,B=4位,总共16位,2个字节,成像质量不好通常不用。
  • ARGB_8888:同上计算方式共32位,4个字节,成像质量最佳。
  • RGB_565:同上计算方式共16位,2个字节,成像质量次之。

所以,为了达到图片占用更小内存的目的,可以从图片长度、宽度以及一个像素点占用的字节数入手,如果不改变以上三个参数的压缩方式,将只能降低图片的文件大小。
而Android中常见的几种压缩方式如下:

  • 质量压缩
//quality 图像压缩率,0-100。 0 压缩100%,100意味着不压缩
bufferedOutputStream.compress(Bitmap.CompressFormat.JPEG, quality, bos);

这种方式,通过算法扣掉(同化)了图片中的一些某个点附近相近的像素,达到降低质量减少文件大小的目的。

  • 采样率压缩(Luban代表)
//inSampleSize 采样率(采样频率),是指每隔多少个样本采样一次作为结果,比如将这个结果设置为4,意味着从原本图片的4个像素中取一个像素作为返回结果,其余的都被丢弃
BitmapFactory options.inSampleSize =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值