将会记录一些和图片博客相关的内容,包括如何在有限的带宽和对象存储下尽可能提高图片质量和体验,色彩管理等。

如果你对这些内容也感兴趣,欢迎继续阅读或与我交流,否则,这部分内容对于大部分读者应当是“透明”的。

AVIF

AVIF 在高压缩率的情况下,仍能保持不错的视觉效果,而且兼容性是几种先进图片格式中最好的,基本上主流浏览器都能够支持。

经过肉眼观测,4096px 的图片,500KB 的 avif 能够有不错的观感、加载速度和费用平衡,下面这张图片压缩参数是 Quality 55,Speed 6,压缩后体积是 298 KB。

AVIF 图片

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 参数,请参考 ImageCodecsHDR 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 质量略差一些。

JPEG XL 图片

HEIF

HEIF 的支持就比较差了,压缩率也不如 AVIF,想不到用它的理由,目前可能只有 Safari 支持的比较好。

HEIF 图片

色彩管理

某次面试的时候,面试官提到如何确保图片在每个人的终端上有一致的显示效果?

仔细思考,我的回答会是:也许做不到。因为终端设备的情况实在太过于复杂,每个设备的显示技术、颜色管理、用户设定都不同,很难保证一个“一致”的显示效果。举一个极端的例子,我见过相当一部分设备开着数个“电脑管家”提供的护眼模式,叠加之后的显示效果可想而知。

不过我能做到的是在内容提供端提供一个尽可能统一且兼容的方案,目前来看,可能会是 nclx 标识,他足够简单,足够轻量,测试来看浏览器的兼容性也很好。剩下的就是相信浏览器与系统的颜色管理。

诺艾儿 01

诺艾儿 02