【问题标题】:Inspect CGColorSpace ICC color profile data on iOS在 iOS 上检查 CGColorSpace ICC 颜色配置文件数据
【发布时间】:2017-11-17 12:12:14
【问题描述】:

我正在寻找一种方法来检查 CGColorSpacecopyICCData() 方法提供的 ICC 颜色配置文件数据。

具体来说,我在 iOS 上将 PNG 图像加载到 UIImages 中,并试图找到一种方法来使用 let iccData:CFData? = aUIImage.cgImage!.colorSpace!.copyICCData() 来确定图像文件的伽玛值。这适用于使用 3D 渲染的游戏——如果源图像具有标准 2.2 gamma,我会将图像数据作为 sRGB(例如 MTLPixelFormatRGBA8Unorm_sRGB 加载到纹理中,如果它有gamma 为 1.0 我会将其加载为线性纹理(例如 MTLPixelFormatRGBA8Unorm

注意:仅将 UIImage/CGImage 传递给渲染系统(SceneKit/Metal)并让它对其进行排序的解决方案在这里不起作用,因为:1. 我的一些渲染正在做的是将 2D 图像组装成 3D 纹理,所以这是我需要对原始数据做的事情,而不是我可以从标准图像文件格式中读取的东西; 2.我特意尝试将gamma-1.0图像传入渲染系统,避免sRGB→线性转换的开销(渲染在线性空间)。

另外:手动 ICC 解析解决方案、Apple-API 使用解决方案和开源库建议都是可接受的答案。这并不是专门针对工具推荐的查询——任何可行的解决方案都是一个很好的解决方案——但在我的研究中,手动 ICC 解析会很笨拙,而且 Apple 的 API 似乎没有公开任何 ICC 属性。所以我相信最有可能的答案是指向一些我无法通过 Google、GitHub、CocoaPods 或 StockOverflow 找到的库,并且很乐意接受。

【问题讨论】:

    标签: ios cocoa-touch core-graphics gamma color-profile


    【解决方案1】:

    最好的办法是使用示例 icc 'https://sourceforge.net/projects/sampleicc/'。只需按照您的描述获取配置文件数据,然后使用 OpenIccProfile 加载它。从那里,获取标头结构 (.m_Header) 的引用并提取您需要的信息。我还建议您查看 RefIccMax 'https://github.com/InternationalColorConsortium/RefIccMAX',它是同一库的较新版本,但尚未准备好迎接黄金时段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 2012-03-08
      相关资源
      最近更新 更多