in 偶知道

EXIF vs ICC

(本文不提供名词解释。)

前几天打算去掉手头一批照片的exif信息(主要是去掉拍摄日期保护隐私)。然后想到:这样做会不会同时去掉照片的色彩空间/内嵌ICC信息?照片信息中对色彩空间的定义,是不是和exif信息放在一起的?

首先要找到能够识别图片的色彩空间和exif的软件。专业图片处理工具如Photoshop、GIMP,能够识别图片内嵌的色彩空间,但似乎需要另外的插件才能读exif。绝大多数看exif的常用小工具(如Exif Viewer)都不支持查看色彩空间。Windows下有个叫PhotoMe的免费软件,可以查看/修改图片的各种信息,用着还不错。

查了下Exif的标准,在EXIF Sub IFD里,确实有一个地址[A001]被定义为ColorSpace的,但我试过的所有exif软件里都看不到这个字段的内容(回头试试直接源文件寻址),而photoshop等软件嵌入色彩空间信息时,似乎也是存在了别的地方,和这个字段无关。所以貌似exif里是可以定义色彩空间的,但似乎没人这样用过。。。

其实照片的头信息中,有很多种不同的结构标准:Exif、IPTC、GPS、ICC、XMP....之间彼此独立,可以共存于照片文件中。照片的色彩空间信息是存在ICC的部分,和Exif无关。所以理论上移除exif信息,是不会影响图片的icc信息的。但事实上很多号称移除exif的软件,都是不分青红皂白,把文件的很多其它信息一起删除,慎用。推荐一下jhead,有选项可以控制只删除exif还是删除所有信息,多平台,命令行模式,支持批处理。

jhead -de -di -dx ×.jpg
移除所有jpg文件的Exif、IPTC、XMP信息,保留ICC色彩空间信息

另外发现有些软件(如GIMP)在把照片存贮为sRGB空间时,实际上并没有往照片的ICC信息中写入任何内容,而是直接存成了无色彩定义的文件(?待验证)。虽然这种无定义的文件在显示时基本都被默认当成sRGB了,但理论上用户可以把自己的默认显示定义为其它非sRGB空间,所以GIMP这样处理似乎不大好?

最后做一下试验。八张图

0.  1.
2.  3.
4.  5.
6.  7.

0. 源文件,包含exif信息,指定sRGB空间(Lightroom导出)
1. 在GIMP中,把0重新指定(Assign)为sRGB空间,但这时候另存为的文件其实是没有指定任何icc的

2. 在GIMP中,把0不做任何转换,直接指定为AdobeRGB空间(Assign Color Profile)
3. 在GIMP中,把0转换到AdobeRGB空间(Convert to Color Profile),注意2和3的区别!

4. 移除2的exif信息,保留icc
5. 移除3的exif信息,保留icc

6. 移除2的全部信息,pure jpg
7. 移除3的全部信息,pure jpg

童鞋们可以思考一下,这八张图都应该是什么效果(完全看不出区别的请自剐双目)

答案(用鼠标选中下列文字):
--------------------
一共有三种效果:
A - 原图效果
B - sRGB被显示成AdobeRGB,造成的失真
C - AdobeRGB被显示成sRGB,造成的失真

在支持色彩空间的浏览器,如Firefox(需要改变默认配置#)、Safari上,效果为AABABAAC
在不支持色彩空间的浏览器,如IE、Chrome上,效果为AAACACAC

--------------------

Update:发现2012年以后的 Chrome 好像增加了色彩管理功能,可以正常显示了。只是时不时还传出中间某些版本功能突然失灵的消息……

这个网站通过鼠标悬浮动态演示,几种效果间的对比更好看。

Write a Comment

Comment

  1. 真的看不出来啊。。。我是不是应该自插双目啊?……深深叹气,第一眼感觉1和3是有些色彩差别的,其他的没什么差别了。。。我是chrome 6....

  2. 昏倒。。。看得很清楚啊。因为AdobeRGB的色域比sRGB要广,所以把sRGB的数据当作AdobeRGB显示(B)时,对比度和色彩鲜艳程度都要强一些,反之(C)就显得黯淡。小熊背后的墙、上方的红色圆盘、小熊的肚兜,都很明显的。。。

  3. 我觉得2和4和其他张差别比较明显,但是到了6居然又回去了一点,还蛮神奇的。右边一列似乎是持续黯淡,于是到了7就也挺明显的

  4. ...实验结果是 ABCACABB

    firefox 10.0 @ ubuntu 11.04
    截图(.png)后用 GIMP(v2.6.11) 取(23,132)位置的颜色, 分别是:
    R G B, R G B
    84 47 141, 73 77 138
    83 40 144, 85 46 141
    83 40 144, 85 46 141
    73 77 138, 76 78 135

    • 赞!终于有人来提这个问题了!
      这个以前也讨论过 http://blog.chenyang.net/?p=478
      没写在这篇帖子里,避免搞的更复杂了 :P
      你这种状况是因为系统设置了另外的色彩配置文件(通常是校准显示器后的自定义ICC),
      于是那些没有内嵌ICC的文件,被显示成你定义的ICC而不是sRGB,
      你的显示结果应该是:ADBABADE
      D - sRGB被显示成自定义ICC,造成的失真
      E - AdobeRGB被显示成自定义ICC,造成的失真

      • 囧, 发现我这还真奇葩了....测试了许多浏览器/操作系统/机型的组合. 除了这台廉价笔记本上的FF10@Ubuntu11.04这种组合, 其余组合都没有超出你说的那两种情况. 顺便一提, 发现 IE9 开始支持内嵌ICC的图片了.

        我没有刻意设置过 ICC, gamma 之类的东西...全部默认...
        似乎是指派的ICC没能被ff正确理解, 因为没有内嵌ICC的文件反而全都"正确(按sRGB)显示了.