32

问题:我在 Interface Builder 中设置了颜色,设置了通道 RGB,然后我对工作窗口进行了截图,在 Photoshop 中打开它并通过我在 Interface Builder 中设置的颜色选择器检查颜色。结果——RGB值和我设置的不一样。

视频: http ://www.youtube.com/watch?v=ASLfnYHPbqM

大多数异常从第 45 秒开始,当时我尝试使用 Interface Builder 的颜色选择器。它显示 RGB 值与我在他相同并安装的值不同),但颜色选择器 IB 的值与颜色选择器 Photoshop 的值一致。

4

2 回答 2

53

Apple 认为颜色在任何地方看起来都相同比颜色在任何地方都具有相同的 RGB 值更重要。看,相同的 RGB 值在不同的屏幕上看起来并不相同,因为每个屏幕都有不同的显示特性。

因此,当您截取屏幕截图时,Apple 不仅为图像中的每个像素存储一个 RGB 值,它们还将您的显示器的显示特性存储在图像文件中。那有什么好处?如果其他人打开你的截图,系统可以查看创建它的人的显示器特性,将这些特性与想要观看它的人的显示器特性进行比较,然后可以计算出它必须如何采用 RGB图像中的值,以便图像在当前监视器上看起来相同。如果它只是显示 RGB 值而不做任何这些,图像颜色可能看起来不对(在某些情况下只是轻微的,在某些情况下更多,如果用户的显示器非常糟糕,在某些情况下甚至是完全错误的) .

所以系统会向图形适配器发送不同的 RGB 值,因为 RGB 颜色本身并不能真正描述颜色。RGB 值和显示器配置文件确实描述了一种颜色,而不是 RGB 值很重要,颜色很重要。如果我制作红色的东西,我希望它在每台显示器上都是相同的红色。我不希望它在一台显示器上是深红色,在另一台显示器上是浅红色,而在第三台显示器上是几乎粉红色的红色。

Photoshop 的问题在于它有自己的内置颜色校正机制。Photoshop 通常在 sRGB(标准 RGB 颜色空间)或 Adob​​e RGB(Adobe 发明的扩展颜色空间)中工作。当您加载不在所需颜色空间内的图像时,Photoshop 将转换图像的颜色空间,并且每次颜色空间转换都会导致 RGB 值发生变化。请注意,在 Photoshop 中显示的图像仍会根据您当前的显示器颜色特性进行颜色校正,只是您在 Photoshop 中操作的 RGB 值位于另一个颜色空间中,当存储回文件时,Photoshop 会将这些值转换回或它将保留它们并将新的颜色配置文件嵌入到图像文件中。

仅使用 RGB 来描述颜色的时代已经结束多年。今天,RGB 本身相当没有意义,只有与颜色配置文件结合使用时,它在描述实际颜色时才真正有意义。

如果您想要没有嵌入真实颜色配置文件的屏幕截图,请执行以下操作:

  1. 打开“系统偏好设置”
  2. 转到“显示”
  3. 转到“颜色”
  4. 选择“通用 RGB 配置文件”
  5. 制作你的截图
  6. 改回您的个人资料

在您更改配置文件之前可能需要先退出 Xcode(并在您更改回配置文件后重新启动它),因为我不确定更改配置文件是否会立即生效。它肯定会立即影响显示器上的显示方式,但是如果您想通过选择特定的 RGB 值在 Xcode 中选择一种颜色,我不确定配置文件更改是否也会在此处立即生效(您可以给它尝试不重新启动,如果不起作用,则必须重新启动重复)。

但是,这可能仍会导致 Photoshop 中的颜色不正确,因为 Photoshop 仍可能将颜色转换为 sRGB 或 Adob​​e RGB。因此,您可能不想选择“通用 RGB 配置文件”,而是选择“sRGB”配置文件(取决于您的 OS X 版本,也可能命名为“sRGB IEC61966-2.1”)。这样图像已经在 sRGB 颜色空间中。您只需要说服 Photoshop 保持这种方式(而不是将其转换为 Adob​​e RGB),然后您将真正在 Xcode 和 Photoshop 中看到相同的 RGB 值。

请注意更改颜色配置文件如何使您的显示看起来完全不同?你认为颜色变化很大吗?相信我,与不同的显示器有时会改变颜色相比,这算不了什么。也许您现在可以理解为什么色彩校正如此重要了。所以问题是,为什么 RGB 值首先对您如此重要?只要显示的颜色相同,RGB 值是否相同真的很重要吗?

于 2013-01-29T11:11:39.287 回答
14

这是有效的指南,只需按照以下步骤操作,您就可以通过编程方式设置 UIColor 并让它们与屏幕截图中的颜色相匹配。

在此处输入图像描述

于 2015-11-06T00:19:55.380 回答