检查iOS上的CGColorSpace ICC颜色配置文件数据

检查iOS上的CGColorSpace ICC颜色配置文件数据,ios,cocoa-touch,core-graphics,gamma,color-profile,Ios,Cocoa Touch,Core Graphics,Gamma,Color Profile,我正在寻找一种方法来检查ICC颜色配置文件数据提供的方法 具体来说,我正在将PNG图像加载到iOS上的s中,并试图找到一种使用let iccData:CFData?=aUIImage.cgImage!。色彩空间!。copyICCData()确定图像文件的gamma。这适用于使用3D渲染的游戏-如果源图像具有标准的2.2 gamma,我将以sRGB(例如,MTLPixelFormatRGBA8Unorm\u sRGB)的形式将图像数据加载到纹理中,如果gamma为1.0,则改为以线性纹理的形式加载

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

具体来说,我正在将PNG图像加载到iOS上的s中,并试图找到一种使用
let iccData:CFData?=aUIImage.cgImage!。色彩空间!。copyICCData()
确定图像文件的gamma。这适用于使用3D渲染的游戏-如果源图像具有标准的2.2 gamma,我将以sRGB(例如,
MTLPixelFormatRGBA8Unorm\u sRGB
)的形式将图像数据加载到纹理中,如果gamma为1.0,则改为以线性纹理的形式加载(例如,
MTLPixelFormatRGBA8Unorm

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


另外:手动ICC解析解决方案、使用Apple API的解决方案和开源库建议都是可以接受的答案。这并不是专门针对工具推荐的查询-任何可行的解决方案都是好的-但在我的研究中,手动ICC解析将是笨拙的,苹果的API似乎没有暴露任何ICC属性因此,我相信最有可能的答案是指向某个库的指针,我无法通过Google、GitHub、CoCoCoapods或StockOverflow找到它,我会很高兴地接受它。

您最好的选择是使用示例icc“”。只需获取您描述的配置文件数据,然后使用OpenIccProfile加载它。从那里,获取对t的引用读取头结构(.m_header)并提取所需的信息。我还建议您查看ReficMax“”,它是同一库的较新版本,但尚未准备好用于黄金时段