【问题标题】:Xcode 9 renders P3 PDF assets into SRGBXcode 9 将 P3 PDF 资源渲染为 SRGB
【发布时间】:2018-12-09 20:53:51
【问题描述】:

我花了好几个小时试图弄清楚这一点。

目标

UIImageView 中显示 P3 PDF 资源(PDF 在 P3 颜色空间中是 100%)。

问题

我正在创建一个 P3 PDF 资产并添加到 Xcode 中。在资产目录中,资产以正确的 P3 颜色显示。使用UIImageView内部的asset并在iPhone X(物理设备,支持P3色彩空间)上运行时,显示的asset是SRGB而不是P3。


有人知道如何解决这个问题吗?
任何帮助将不胜感激。
投资回报率

【问题讨论】:

  • 您应该提供更多信息,例如你是如何创建 PDF 资源并添加到 Xcode 中的。
  • @GiacomoCatenazzi 我使用 Sketch 创建并通过资产目录添加它
  • sketchapp.com/docs/other/color-management您是否有“非托管”或 P3 配置文件?
  • @GiacomoCatenazzi P3 Profile,我在上面也写过,我检查了多个检查员
  • @GiacomoCatenazzi 你有解决方案的方向吗?

标签: ios xcode uiimageview color-space asset-catalog


【解决方案1】:

直接使用PNG

您提到您怀疑 PDF 中存在 PNG。我建议直接使用 PNG 而不使用包装 PDF。

在设备上部署 PDF 时,Apple 会将其渲染为 PNG。此渲染可能会应用特定的颜色配置文件(PDF 和颜色管理是一个广泛的主题)。

此外,渲染本身可能不会产生您期望的结果,请参见例如https://bjango.com/articles/idontusepdfs/

每像素 16 位(每通道)

Apple 的人机界面指南规定必须使用每像素 16 位并以 .png 格式导出图像。

适当时,使用每像素 16 位(每通道)的 Display P3 颜色配置文件并以 .png 格式导出图像。

请看这里:https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color/#color-management

最后,我想再提两个您可能已经在使用的设置:

压缩

在图像资产的属性检查器中,您应该选择“无损”。

色域

将色域切换为“sRGB 和 Display P3”,然后确保您的图像位于 .xcasset 文件中的“Display P3”插槽中。

使用 Sketch 的 PNG 导出测试

看一下色度图,可以看出 P3 色彩空间对于绿色的色域更大。

由于我不确定是否能识别出两种色彩空间的区别,所以我做了以下实验:

  • 在 Sketch 中插入了一个画板
  • 创建了一个颜色为#00FF00的绿色矩形
  • 在 下分配 Display P3 颜色配置文件
  • 选中矩形并点击导出选中
  • 已选择不隔行扫描的 .png

然后我做了同样的事情,但使用的是 sRGB ICE61966-2.1 配置文件。

我在 ColorSync 实用程序中检查了两个 .png(可以在 /Applications/Utilities 下找到)。按下图像信息工具栏按钮可以看到,分配了正确的 ColorSync 配置文件。

在 Affinity Photo 中,我在 下检查了每个通道的位数。它适用于每个通道 8 位的 .png,因此我创建了两个每个通道 16 位的附加 .png 并相应地命名。

然后我使用以下设置将 4 个 .png 添加到 .xcassets 文件夹:

  • 压缩:“无损”
  • 比例:“单一比例”
  • 色域:'sRGB 和 Display P3'
  • 根据正确的插槽(sRGP 或 Display P3)分配 .png。

然后我部署到 iPhone X。

结果:实际上我可以看到绿色矩形之间的差异。 “Display P3”确实有更饱和的绿色。

我将相同的内容导出到旧 iPhone 上,我无法发现 sRGB 和 Display P3 图像之间的任何差异。

我发现有趣的是,直接来自 Sketch 的 8 位变体也可以工作,因此每个通道 16 位似乎并不是一个硬性要求。

【讨论】:

  • 嘿斯蒂芬!谢谢您的回答!您是否知道 Sketch 颜色配置是否可能是问题? (我正在通过 Sketch 导出资产)
  • 好问题。我不知道,但我刚刚看到 Sketch 提供了试用版。如果我能找到更多信息,我会在今天晚些时候尝试。
  • 完美。等不及你的见解。谢谢!
  • Test with PNG export of Sketch 更新了答案。这就是你要找的吗?
  • 嘿斯蒂芬!你深入检查它真是太神奇了。所以基本上 Sketch 中嵌入的 8 位属性基本上是为我们工作的。所以我想知道 PDF 的问题是 Apple 故障还是 Sketch 故障……无论哪种方式,至少我们有一种安全的方法可以在正确的色彩空间中显示资产(有时这对产品很重要)。再次感谢你!我仍然会尝试了解是否可以将 PDF 转换为色彩空间,从而使 xCode 正确呈现它(消除对 1x、2x、3x 资产的需求)等'
【解决方案2】:

您是否为资产选择了色域设置?

您是如何验证 iPhone X 上的图像是 SRGB 格式的?
也许 WWDC16 的谈话值得再次检查: talk slides

【讨论】:

  • 你好。 sRGB 和 P3 之间的颜色略有不同。即使我选择 sRGB 和 P3 并将 P3 资产放置在 P3 框中,仍然显示相同 (sRGB)。我唯一怀疑的是 Sketch 将其导出为 32 位 PNG,我认为 xCode 需要 16 位。但还是很奇怪。
  • @RoiMulia How did you verifiy that the image is in SRGB on the iPhone X?
  • 我在视觉上看到了计算机上的 P3 与 iPhone X 上的 sRGB 之间的差异。当我使用 UIColor3PDisplay 渲染颜色时,我看到了正确的颜色,但我的同一张图像之间存在实际差异Macbook Pro(2017 touch bar,支持 P3)和我的 iPhone X。
猜你喜欢
  • 2020-09-14
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
  • 2021-09-06
  • 2018-02-20
相关资源
最近更新 更多