我正在寻找一种方法来检查提供了CGColorSpace的copyICCData()方法的ICC颜色配置文件数据。
具体来说,我正在将PNG图像加载到UIImage上的iOS上,并试图找到一种方法来使用let iccData:CFData? = aUIImage.cgImage!.colorSpace!.copyICCData()来确定图像文件的伽玛值。这是一个使用3D渲染的游戏--如果源图像具有标准的2.2伽玛,我将将图像数据加载到纹理中作为sRGB (例如MTLPixelFormatRGBA8Unorm_sRGB__),如果它的伽玛值为1.0时,我将将其加载为线性纹理(例如MTLPixelFormatRGBA8Unorm__)。
注意:将一个UIImage/CGImage传递给渲染系统(SceneKit/ here )并让它对其进行排序的解决方案在这里行不通,因为: 1.我正在做的一些渲染是将2D图像组装成三维纹理,所以这是我需要对原始数据做的事情,而不是我可以从标准图像文件格式中读取的东西;2.我专门尝试将Gam-1.0图像传递到渲染系统中,以避免sRGB→线性转换的开销(呈现是在线性空间中)。
还有:手动ICC解析解决方案、Apple使用解决方案和开源库建议都是可以接受的答案。这不是专门针对工具推荐的查询--任何可行的解决方案都是好的--但在我的研究中,手工ICC解析将很难处理,苹果的API似乎没有暴露出任何ICC属性。因此,我认为最有可能的答案是指向某个库的指针,而我还无法通过谷歌、GitHub、CocoaPods或StockOverflow找到它,而且会很高兴地被接受。
发布于 2017-06-16 05:27:19
你最好的选择是使用样例icc 'https://sourceforge.net/projects/sampleicc/‘。只需像您描述的那样获取概要数据,然后使用OpenIccProfile加载它。从那里,获得一个引用到标题结构(.m_Header),并获取您需要的信息。我还建议您看一看RefIccMax 'https://github.com/InternationalColorConsortium/RefIccMAX‘,它是同一库的更新版本,但尚未为黄金时段做好准备。
https://stackoverflow.com/questions/44560064
复制相似问题