一个克制的、理性的关注互联网科技和人文的频道,也谈谈美食和电影,发现和分享一切有趣有价值的内容。
BlurHash与图像占位符

本文将介绍一些将图片编码为短小的字符串的技术。

编码后的占位图通常只有 20+ 字符长度。相比于缩放原图生成超迷你图像,它更加节省空间。并且算法可以优化图像内容(例如高度模糊),看上去不会是将极小尺寸的图像拉长拉宽的低质量效果。

BlurHash 是这类方案中最经典的开源算法之一。它主要对图像的 RGB 数据进行离散余弦变换(DCT),最终编码为定制过的 base83 字符串。

BlurHash 允许自定义分辨率,大多数时候推荐 4 * 3(宽大于长)或 3 * 4(长大于宽)。 值越高占位图显示的细节越多,但不能超过 9。

ThumbHash 是受 BlurHash 启发的另一个类似算法。相比于 BlurHash 它多了 Alpha 通道支持,在编码中包含高宽比。号称具有更好的色准和更多细节。

既然 ThumbHash 支持透明度,貌似也更加强大,是否可以取代?答案是不能。

首先 ThumbHash 的一个缺陷是不能自定义分辨率,而 BlurHash 能以编码结果更大的代价换取更多细节。所以对于大尺寸图像,BlurHash 仍有用武之地。其次 ThumbHash 的实际效果并不总是比 BlurHash 好,在某些时候它编码的图像有更明显的瑕疵。这时候 BlurHash 的经典分辨率通常能轻松拿下。

所以同时支持 BlurHash 和 ThumbHash 才是最优的。


source
Back to Top