将会记录一些和图片博客相关的内容,包括如何在有限的带宽和对象存储下尽可能提高图片质量和体验,色彩管理等。
如果你对这些内容也感兴趣,欢迎继续阅读或与我交流,否则,这部分内容对于大部分读者应当是“透明”的。
AVIF
AVIF 在高压缩率的情况下,仍能保持不错的视觉效果,而且兼容性是几种先进图片格式中最好的,基本上主流浏览器都能够支持。
经过肉眼观测,4096px 的图片,500KB 的 avif 能够有不错的观感、加载速度和费用平衡,下面这张图片压缩参数是 Quality 55,Speed 6,压缩后体积是 298 KB。

OSS
考虑了一下阿里云 OSS,bucket 放在杭州,开着公共读的话,外网流量比较多也不好控制,海外访问速度一般。使用国内正经 CDN 的话需要域名备案,其实和放在 R2 再套 CDN 的麻烦程度没有区别。
阿里云同城冗余存储的费用是 0.15 RMB 每月每 GB,R2 是 0.015 USD 每月每 GB,还有 10GB 的免费额度。
最重要的是 R2 没有外网流量费用,所以目前所有的图片都放在 R2 上,国内访问可能会感觉略慢。
HDR
小红书都支持 HDR 图片了,我还在等什么?
好在既然用了浏览器,HDR 图片的支持可谓易如反掌,目前博客里大部分需要用到 HDR 的图片都是用 PQ 传递函数的 AVIF,少量特别情况用的是 Gainmap JPEG,唯一的缺点是安卓用户在保存到相册之后就无法正确显示了。
关于如何在编码的时候指定 HDR 参数,请参考 ImageCodecs 和 HDR Conversion。
JPEG XL
Chrome 又把 JPEG XL 的支持加回了 flag 里,可以通过 chrome://flags/#enable-jxl-image-format 来启用,iOS 的 Safari 和 WebKit 的 Chrome 已经支持了 JPEG XL。
压缩参数是 distance 4.0,图片分辨率是 4000 × 3000,压缩后文件体积 340 KB,比同等体积的 AVIF 质量略差一些。
HEIF
HEIF 的支持就比较差了,压缩率也不如 AVIF,想不到用它的理由,目前可能只有 Safari 支持的比较好。

色彩管理
某次面试的时候,面试官提到如何确保图片在每个人的终端上有一致的显示效果?
仔细思考,我的回答会是:也许做不到。因为终端设备的情况实在太过于复杂,每个设备的显示技术、颜色管理、用户设定都不同,很难保证一个“一致”的显示效果。举一个极端的例子,我见过相当一部分设备开着数个“电脑管家”提供的护眼模式,叠加之后的显示效果可想而知。
不过我能做到的是在内容提供端提供一个尽可能统一且兼容的方案,目前来看,可能会是 nclx 标识,他足够简单,足够轻量,测试来看浏览器的兼容性也很好。剩下的就是相信浏览器与系统的颜色管理。

