引言
上文ps导出png设置探究 和 qq查看png颜色不一致 问题后,又研究了displayp3颜色空间(苹果专属)的一些特性,对颜色空间又有了新的认识。
起因
在mac上用ps的display-p3颜色空间制作了三张绿色(rgb设置0,255,0)图(图片放在末尾github链接里,以greenp3开头的三张),分别是①不勾选转成sRGB不嵌入颜色空间②勾选转成sRGB不嵌入颜色空间③不勾选转成sRGB且嵌入颜色空间。用mac的qq截图发现(与前一篇文章用win的qq截图不写入iCCP块的不同点在于,mac的qq截图会在iCCP写入ICC Profile信息),①和②没有嵌入颜色空间,mac qq上显示的都是p3空间的117, 251, 76浅绿色值(用mac自带的测色计测,默认显示p3空间 的值),只有③才是p3的255绿色。(windows下由于图片直接复制粘贴到csdn里会显示里面的绿色都是sRGB的255绿,所以我又在windows下截图了一遍,下面看到的图如果你用windows看的话,就是我实际上在mac看到的结果,如果用mac看我无法保证效果,可以自己尝试一下 请把mac自带的测色计改为以sRGB显示,因为浏览器的颜色空间是sRGB)
从上一篇文章我们可以推测(实际用libpng读也确实如此),①图存储的是255值 + 无iCCP,②图是255值对应的sRGB值 + 无iCCP,但是因为p3色域比sRGB广,所以没有对应的颜色,因此实际存储的就是上限0,255,0,③图是255 + iCCP写入了display-p3的颜色空间。
以二进制查看数据,①和②完全一值,均为下图所示
③嵌入了颜色空间,显示iCCP为Display,均符合推测
那么117, 251, 76又是怎么来的呢,我们找个网站转换一下(或者mac自带的测色计看),发现p3空间的117, 251, 76正好对应sRGB空间的0,255,0绿色。由此我们也可以得出结论,①②没有嵌入颜色空间,所以在mac qqnt的聊天框(mac的预览和照片也是)里被当作了sRGB空间处理,显示了117, 251, 76色值。只有③有颜色空间才被正确的显示了display-p3的正统绿色。所以如果想要保持预览结果正确的话,建议在导出的时候嵌入颜色空间,避免没有颜色空间而且ps也不按规范写入gAMA块的情况下,各家图片解析器就各显神通了。(在我的红米k70上无论在哪里,怎么看这几张原图都是255的绿色,所以也和设备类型/屏幕类型有关)。
其他
1.windows上看这三张原图都是0,255,0绿色,即使放大后也一样,说明即使解析到了iCCP(上一篇文章的结论表明能用照片查看图片支持解析iCCP)是displayp3,也因为显示屏无法支持而显示了上限0,255,0绿色。
2.在windows上看mac qq发的截图能看出差别(和mac放在qq聊天框里的效果一样),但是复制粘贴到qq聊天框里就看不出区别了(和mac的情况正好完全相反)。如果用windows的文件管理器图标查看和照片打开查看也全是255绿。下图是windows的qq看文章最开始的截图(和之前一样,直接发出来会显示6个sRGB255绿色,所以我又在windows下截图了一遍,确保windows下能看到差异)。
用测色计(我用的utools)发现,和mac一样(除了mac显示的是display-p3色值而windows是sRGB色值以外),左边两张是117, 251, 76,右边一张是0,255,0。打开vscode查看二进制发现mac的截图会在iCCP写入ICC Profile的值。
也就是说ICC Profile这个值在windows照片/预览、windows qq聊天输入框都会把117, 251, 76色值解析成0,255,0;但是windows qq聊天窗、mac qq聊天窗、聊天框均把117, 251, 76色值解析成117, 251, 76色值(windows是sRGB,mac是display-p3)。到此我也蒙圈了(更别说我的手机的qq上都是绿色而且不同的手机表现还不太一样了),希望有人了解ICC Profile是什么或者了解mac下的qq截图原理的话能回答一下吧。
3.为什么上一篇文章提到win的qq聊天窗和mac/win自带的预览/图片查看器如果解析不到iCCP颜色空间信息和gAMA块(gAMA块这个有待验证)就会当作sRGB空间解析。
这里我在windows下用ps的apple rgb色彩空间制作了0,188,0色值的图片,可以看到对应sRGB空间下的0, 196, 35。
将这张图片以不转出sRGB(表示存储的像素值就是ps信息面板上看到的0,188,0)不嵌入颜色空间(不写入iCCP块)导出,可以看到windows的图标预览和照片打开预览都是0,188,0(如果导出颜色空间则显示0, 196, 35,证明能解析iCCP块的adobe rgb)。说明确实将这张图片当作sRGB直接显示了。
4.如果要追求表现效果的话,导出时嵌入颜色空间是一定要勾选的。虽然说市面上大部分都是sRGB的显示器显示不出来效果,但是不勾选的话,如果这张图片是在比sRGB色域更广的色彩空间下制作的话,那由于导出没有任何信息表明这一点,那么显示的效果肯定就和设计制作的时候大相径庭了