先從一張圖片算出大約 20~30 bytes 的字串,就可以在 API response 時快速產生出一個很模糊但是有有代表性的縮圖 (或是在 HTML 裡面放,用 javascript 產生):「BlurHash」。
從官方給的範例比較快理解:
以及:
另外也提供了展現在 app 上的效果:
有支援一些程式語言,不過看起來行動平台上的支援都是比較新的語言 (Swift & Kotlin),如果不是用這些語言而想用 BlurHash 的話就得自己整了...
另外在 Hacker News 上有翻到先前的討論:「BlurHash: Algorithm to generate compact representation of an image placeholder」,開頭就看到其他軟體的作法:
For comparison, Instagram sends ~200 byte base64 thumbnails in its API responses. It's a low-res JPEG with a fixed header to save a bit more space. This is also used to blur sensitive images. You can get even better results with webp.
這個方法就避開另外再弄一包 library 進去,用現成的 library 就會動了...
https://www.facebook.com/kewang.information/posts/2679222995687391
感謝大大分享這篇文章,今年的 COSCUP 有用這個題目分享並延伸其他的內容,也同步 feedback 回來。