Xcode 9 将 P3 PDF 资源渲染为 SRGB
Xcode 9 renders P3 PDF assets into SRGB
我花了几个小时试图弄清楚这个问题。
目标
在 UIImageView
中显示 P3 PDF 资源(PDF 在 P3 颜色 Space 中为 100%)。
问题
我正在创建 P3 PDF 资产并添加到 Xcode。在资产目录中,资产以正确的 P3 颜色显示。当在iPhone X(物理设备,支持P3颜色Space)上使用UIImageView
和运行内的资源时,显示的资源是SRGB而不是P3。
有人知道如何解决这个问题吗?
任何帮助将不胜感激。
投资回报率
您 select 资产的色域设置了吗?
您如何验证图像在 iPhone X 上是 SRGB 格式?
也许 WWDC16 的演讲值得再次检查:
talk slides
直接使用PNG
您提到您怀疑 PDF 中有 PNG。我建议直接使用 PNG 而无需包装 PDF。
PDF 在设备上部署时由 Apple 呈现为 PNG。此渲染可能会应用特定的颜色配置文件(PDF 和颜色管理是一个广泛的主题)。
此外,渲染本身可能不会产生您期望的结果,例如参见https://bjango.com/articles/idontusepdfs/
每像素 16 位(每通道)
Apple 的人机界面指南规定每个像素必须使用 16 位并以 .png 格式导出图像。
When appropriate, use the Display P3 color profile at 16 bits per pixel (per channel) and export images in .png format.
最后,我想再提两个您可能已经在使用的设置:
压缩
在图像资产的属性检查器中,您应该选择 'Lossless'。
色域
将色域切换为 'sRGB and Display P3',然后确保您的图像位于 .xcasset 文件的 'Display P3' 插槽中。
使用 Sketch 的 PNG 导出进行测试
看色度图,P3色space偏绿的色域更大
由于不确定自己能否识别出两种颜色space的区别,所以做了如下实验:
- 在 Sketch 中插入了画板
- 创建了一个颜色为 #00FF00 的绿色矩形
- 在
下指定 显示 P3 颜色配置文件
- 选择矩形并单击 导出选择
- 选择了无隔行扫描的 .png
然后我做了同样的事情,但使用了 sRGB ICE61966-2.1 配置文件。
我在 ColorSync 实用程序中检查了两个 .png(可以在 /Applications/Utilities 下找到)。按下图像信息工具栏按钮,可以看到已分配正确的 ColorSync 配置文件。
在 Affinity Photo 中,我在 下检查了每个通道的位数。它适用于每通道 8 位的 .png,因此我创建了两个额外的每通道 16 位的 .png,并相应地命名。
然后我将 4 个 .png 添加到具有以下设置的 .xcassets 文件夹中:
- 压缩:'Lossless'
- 规模:'Single Scale'
- 色域:'sRGB and Display P3'
- 已将 .png 相应地分配给正确的插槽(sRGP 或 Display P3)。
然后我部署到iPhone X.
结果:实际上我可以看到绿色矩形之间的区别。 'Display P3' 确实有更饱和的绿色。
我将同样的东西导出到旧的 iPhone,在那里我无法发现 sRGB 和 Display P3 图像之间的任何差异。
我发现有趣的是,直接来自 Sketch 的 8 位变体也可以工作,因此每个通道 16 位似乎不是一个硬性要求。
我花了几个小时试图弄清楚这个问题。
目标
在 UIImageView
中显示 P3 PDF 资源(PDF 在 P3 颜色 Space 中为 100%)。
问题
我正在创建 P3 PDF 资产并添加到 Xcode。在资产目录中,资产以正确的 P3 颜色显示。当在iPhone X(物理设备,支持P3颜色Space)上使用UIImageView
和运行内的资源时,显示的资源是SRGB而不是P3。
有人知道如何解决这个问题吗?
任何帮助将不胜感激。
投资回报率
您 select 资产的色域设置了吗?
您如何验证图像在 iPhone X 上是 SRGB 格式?
也许 WWDC16 的演讲值得再次检查:
talk slides
直接使用PNG
您提到您怀疑 PDF 中有 PNG。我建议直接使用 PNG 而无需包装 PDF。
PDF 在设备上部署时由 Apple 呈现为 PNG。此渲染可能会应用特定的颜色配置文件(PDF 和颜色管理是一个广泛的主题)。
此外,渲染本身可能不会产生您期望的结果,例如参见https://bjango.com/articles/idontusepdfs/
每像素 16 位(每通道)
Apple 的人机界面指南规定每个像素必须使用 16 位并以 .png 格式导出图像。
When appropriate, use the Display P3 color profile at 16 bits per pixel (per channel) and export images in .png format.
最后,我想再提两个您可能已经在使用的设置:
压缩
在图像资产的属性检查器中,您应该选择 'Lossless'。
色域
将色域切换为 'sRGB and Display P3',然后确保您的图像位于 .xcasset 文件的 'Display P3' 插槽中。
使用 Sketch 的 PNG 导出进行测试
看色度图,P3色space偏绿的色域更大
由于不确定自己能否识别出两种颜色space的区别,所以做了如下实验:
- 在 Sketch 中插入了画板
- 创建了一个颜色为 #00FF00 的绿色矩形
- 在
下指定 显示 P3 颜色配置文件 - 选择矩形并单击 导出选择
- 选择了无隔行扫描的 .png
然后我做了同样的事情,但使用了 sRGB ICE61966-2.1 配置文件。
我在 ColorSync 实用程序中检查了两个 .png(可以在 /Applications/Utilities 下找到)。按下图像信息工具栏按钮,可以看到已分配正确的 ColorSync 配置文件。
在 Affinity Photo 中,我在
然后我将 4 个 .png 添加到具有以下设置的 .xcassets 文件夹中:
- 压缩:'Lossless'
- 规模:'Single Scale'
- 色域:'sRGB and Display P3'
- 已将 .png 相应地分配给正确的插槽(sRGP 或 Display P3)。
然后我部署到iPhone X.
结果:实际上我可以看到绿色矩形之间的区别。 'Display P3' 确实有更饱和的绿色。
我将同样的东西导出到旧的 iPhone,在那里我无法发现 sRGB 和 Display P3 图像之间的任何差异。
我发现有趣的是,直接来自 Sketch 的 8 位变体也可以工作,因此每个通道 16 位似乎不是一个硬性要求。