最近在处理图片的时候,发现图片色值偏差。于是发现图片的附件信息是不同的,它们来自不同的设备(手机拍摄,相机拍摄,PS绘制...)
而我们需要处理之后还能够保存图片的原始信息,这时候我们需要了解差异在哪里?怎么解决差异化问题 ?
颜色概念
颜色是一种物体以不同的波长组合反射光,光传播到我们的眼中,眼中的光受体将这些波长转化成我们所知道的颜色。在物理学中,重要的是光线 - 亮度和频率。在印刷学中,更多是关于色轮、油墨以及艺术模型。
在理想情况下,世界各地的屏幕和网页浏览器都应该显示出完全相同的颜色。可不幸的是,由于一些内在技术的不一致,他们并没有显示的完全相同。因此,我们需要颜色管理,它能够使我们通过颜色模型、空间和配置文件等手段来达到颜色的折中统一。
iOS 获取图片Exif(Exchangeable Image File )信息:
NSData *imageData = UIImagePNGRepresentation(self.originalImage);
CGImageSourceRef cImageSource = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
NSDictionary *dict = (NSDictionary *)CFBridgingRelease(CGImageSourceCopyPropertiesAtIndex(cImageSource, 0, NULL));
NSMutableDictionary *dictInfo = [NSMutableDictionary dictionaryWithDictionary:dict];
NSLog(@"Exif 详细信息: %@\n",dictInfo);
颜色模型 ColorModel
两种常见的颜色模型是加色模型和减色模型。加色模型(如用于数字显示的RGB)使用亮色调来显示颜色(由黑至白),而减色模式(如打印中使用的CMYK)则是通过削弱白色来工作(由白至黑)。
色彩空间 ColorSpace
sRGB被设计为网络的标准颜色空间。它是基于RGB的,是一个比较小的颜色空间。sRGB通常被认为是通用颜色的最小区域,是颜色管理中支持跨浏览器里最安全的选择。其他的颜色空间(如Adobe RGB或ProPhoto RGB - 在Photoshop和Lightroom中使用)其实可以表现出比sRGB更鲜艳的色彩,但后者(sRGB)在大多数网络浏览器、游戏和显示器上都是普遍存在的。
颜色空间有三个通道(红色、绿色和蓝色)。在8位模式下,每个通道有255种颜色可供使用,共有1670万种颜色。而16位模式下,图像可以显示数万亿种颜色。
颜色空间(如sRGB,Adobe RGB和ProPhoto RGB)之间的差异来自于它们的 色域(可用色调再现的颜色范围)、光源以及伽玛曲线的不同。sRGB的颜色范围比Adobe RGB小约20%,而ProPhoto RGB要比Adobe RGB 大约50%。
色域
颜色配置文件是当前设备的颜色空间的描述信息 Profile Name
它被用于在不同的颜色空间之间进行转换。配置文件被用于尝试确保图像在这些不同类型的屏幕和介质上,看起来尽可能的相似。
图像可以包含一个由国际色彩联盟(ICC)所描述的嵌入式颜色配置文件,以准确表示颜色应如何显示。
一些显示器具有类似于sRGB的颜色配置文件,并且根本不支持使用更好的颜色配置文件,因此嵌入配置文件的价值可能很有限。所以,请先检查你的目标显示器是什么样的。
所以主要是和显示图片的设备是否支持更好的颜色配置文件有关,一个iPhoneX 拍摄的照片在 6S 上就不会呈现对应的配置,因为6S 支持的是 sRGB,iPhone 7及以上是 Display P3;
如果保证图片的质量的情况下,需要处理之后附加上详细信息的.
iphoneX 的系统相机拍摄图片后缀竟然是: HEIC
- Display P3
Display P3 并不是完全等于 DCI-P3, Display P3 是 Apple 在 DCI-P3 基础上参考了 sRGB 而修订出的自己的标准,它拥有 sRGB 的 Gamma 2.2, 而不是 DCI-P3 的 2.6. 同时 White Point 也与 sRGB 同为 D65(6500K),并非 DCI-P3 的 D50(5500K)。
说人话就是:DCI-P3 规定的标准白色会比 Display P3 更偏黄一些,且 DisPlay P3 由于更低 Gamma 整体画面风格会更亮一些。
参考
相关