图像预加载占位方案对比
| 特性 | 高斯模糊图 | BlurHash | ThumbHash | 主色值 |
|---|---|---|---|---|
| 占数据库容量 | 较大 ( 200 ~ 5k 字节) | 极小 (30+ 字节) | 极小 (20+ 字节) | 最短 (7-9 字符) |
| 模糊质量 | 最高 | 较高 | 很高 | 无任何细节 |
| 性能影响 | 数据库性能影响较大 | 极小 | 极小 | 极小 |
| 综合评价 | 模糊质量最好 存储容量很大 效率一般 | 模糊质量较好 存储容量小 效率很高 | 模糊质量很好 存储容量更小 效率很高 | 纯色无细节 存储容量最小 效率最高 |
方案预览
BlurHash 示例:左侧为原图,右侧为其 BlurHash 生成的模糊占位图如何使用
原理与步骤
- 只需在图像URL后添加相应参数:
- BlurHash:
fmt=blurhash - ThumbHash:
fmt=thumbhash
- BlurHash:
- 将得到的
占位哈希值直接存入数据库 - 在客户端请求数据时,直接将
占位哈希值输出到接口结果(例如 json)中 - 客户端根据接口中相关字段提供的
占位哈希值Decode 出模糊图片,填充至图片容器(例如 html 中的 img 标签)—— 这一步无需网络,处理时间大约是亚毫秒级,用户看到预加载的占位模糊图不会有任何延迟感 - 再通过相关 URL 远程加载清晰的缩略图或原图