iPhone用户被表情包闪瞎 这事得赖微信

摘要:

家人们,不知道最近大家在微信群里有没有刷到过这么一张巨邪门的表情包 ——咱们差评编辑部八十个人的大群,这两天直接被这张“荧光蛙”给沦陷了……因为只要有人在群里甩出这么一张表情包,群里那帮用 iPhone 和 Mac 的同事们,就会看到表情包跟开了 LED 灯似的疯狂自发光,亮度高得离谱,感觉下一秒屏幕都能当手电筒使,有一种亮瞎眼睛的美:



但特别神奇的是,那些用Android手机的同事,就只能看到一张再普通不过的表情包:


然后群里就出现了这么一幕……( PS:同事之间没有恶意,纯属编辑部日常聊天画风~


说实话,一开始世超也挺纳闷,好好的表情包咋就能自己发光了,难不成微信偷偷给苹果埋了个彩蛋,区别对待Android?

直到看到同事说,这玩意儿在 iPhone 上会触发 HDR 效果,才突然反应过来 —— 合着微信里还藏着之前一直都没被发现的 HDR 开关 “BUG”。

众所周知,现在很多手机基本都支持上了 HDR,你在各大平台比如微博,点开一个 HDR 视频,这时候手机屏幕就会自动把视频里高光部分比如灯牌、天空进行一个提亮,这么一来画面看上去就会更加鲜活:


包括照片也是,如果你拍的是 HDR 格式的照片,那么在相册里回看的时候,手机屏幕也会自动提亮高光部分。

然而尽管现在很多平台都支持上了 HDR,但微信一直都是 HDR 绝缘体。

平时大家发 HDR 照片和视频到微信,就算发送之前勾选了“原图”,对方收到的也都是被转换成普通 SDR 格式的版本,HDR 效果全给整没了,是不是很小而美……( bushi


至于为啥这次的表情包就能突破限制,在 iPhone 和 Mac 上玩出 HDR 表情包花活,经过咱们编辑部以及那些懂技术的外援小伙伴们讨论之后,我们猜测,其实问题可能就出在微信对表情包的处理上。

很多小伙伴可能不知道,咱们平时拍的照片、存的表情包,并不单纯只是一张图片,其实它们都偷偷携带着这么一份说明书 —— ICC 配置文件。

里面写着“这张图的白色该多亮”“黑色该多暗”“红色是番茄红还是草莓红”等等之类的关键信息,有了这份说明书,不同设备才能看懂这张图片,然后在当前设备上正确还原出这张图片本来的样子。

adobe 官网对于 ICC 配置文件的解释:


可能是为了照顾到个人隐私,也可能是微信觉得根本没必要保留这些信息,它在处理图片时,会自动剥离或者忽略图片的 ICC 配置文件,这就使得咱们平时通过微信发送的图片,丢失了很多关键信息。

就像你微信发一张手机拍的照片到对面,对面收到照片并且下载到相册后,根本没法看到这张照片是在哪拍的,之前咱们还详细聊过这事儿(传送门)。


但在处理表情包时,可能是程序员漏了这茬,没对表情包的 ICC 配置文件动手脚,结果就让它钻了空子,iPhone 通过 ICC 配置文件,了解到这玩意得用 HDR 模式显示后,自然就触发了屏幕 HDR 效果。

为了验证这个猜想,世超先是把开头那张表情包下载到本地,然后查看了下它的配置文件,果不其然,这个表情包使用的配置文件是 Rec.ITU-R BT.2100PQ 标准,不是我们平时常见的 sRGB IEC61966-2.1。


其中 sRGB IEC61966-2.1 绝对可以称得上是最最最主流的版本,几乎所有电脑、手机、打印机出厂都会默认支持这个标准,这也意味着,不管你用啥设备看,只要按这个标准来,颜色基本大差不差。


而开头那张表情包使用的 Rec.ITU-R BT.2100PQ,根据国际电信联盟给出的技术文档显示,它刚好就是一种针对 HDR 高动态范围的标准,借助这标准,视频和图片就能在支持 HDR 的设备上显示 HDR 效果。


其实不止是微信,你把这这张图片发到 iPhone、Mac 上的飞书或者直接在系统文件管理里看,只要它的 ICC 配置文件没被改动,我们照样能看到 HDR 效果。


甚至把它传到 Apple Watch 上,都能激发 HDR,就离谱……


搞明白原理之后,咱们编辑部小伙伴也尝试着复现了下,试着自己做了几个 HDR 表情包。

主要就是把图片 ICC 配置文件统一改成 Rec.ITU-R BT.2100PQ,然后适当缩小图片尺寸到几十 KB,导出设置里勾选"嵌入颜色配置文件",接着把图片添加到微信表情包,最后确实是在微信上复现了:


不过它这效果很不稳定,有些表情包只能在自己手机上看到 HDR 效果,发到群里别人看到的还是普通表情包。

我个人猜测啊,这其中应该还涉及到某些参数的调整,也可能跟微信对表情包的玄学压缩机制有关系,这会儿网上也有博主试着用 Python 写了个自动化程序,各位感兴趣的差友也可以自己动手试试。


OK,搞清楚微信为啥能显示 HDR 表情包后,我相信很多人都会好奇 ——

为啥只有 iPhone、Mac 这类苹果设备能把表情包的 HDR 效果给显示出来,Android这边咋就跟个没事人似的?难道Android手机都不支持 HDR?

其实不然,现在不少Android旗舰机都支持 HDR10 甚至杜比视界,硬件条件其实并不差。


其中的问题可能出在 —— Android阵营各个厂商对 HDR 的支持标准和优化水平参差不齐。

换句话说,有的手机虽然硬件支持 HDR,但系统在显示图片时,不会主动读取 ICC 配置文件里的信息,导致 HDR 效果无法触发;还有的手机,则是只支持自家私有 HDR 标准,换成其他标准就不行了。

之前有人把 vivo 手机拍的 HDR 照片和实况照片,分享到 OPPO 或者小米手机上,发现照片到了这些手机上,自带的 HDR 效果和实况效果就会失效,就是因为各家支持的 HDR 和实况标准不同导致的。

iPhone用户被表情包闪瞎 这事得赖微信

包括快充也是一样,因为各家支持的快充协议不同,很多手机用的还是私有快充协议,所以用同个充电器给不同品牌手机充电,能实现的最大充电功率也有区别,对于这点,相信差友们早就见怪不怪了~

而苹果很早开始就在自家产品上标榜生产力,虽然很多网友吐槽,它这生产力只对设计师、程序员和视频博主等特定群体更友好。

但不可否认的是,从 Mac 到 iPad 再到 iPhone,苹果全系设备确实很早就支持上了各类主流标准,并且统一了色彩管理体系,自带的色彩管理引擎还能让不同尺寸、不同亮度的屏幕,都按同一套标准显示。

iPhone用户被表情包闪瞎 这事得赖微信

不过好在最近这两年,各家手机厂商都陆续开始在系统层面统一 HDR 标准和实况照片标准,我们跨品牌分享照片的时候,也能保留该有的效果了,未来它们在色彩管理体系和标准上看齐苹果也不是没可能。

希望到了那个时候,微信还没有修复这个蛮有意思的 “BUG”~

我们在FebBox(https://www.febbox.com/cnbeta) 开通了新的频道,更好阅读体验,更及时更新提醒,欢迎前来阅览和打赏。
查看评论
created by ceallan