【问题标题】:Determining the Colorspace of a UIImage确定 UIImage 的色彩空间
【发布时间】:2010-11-12 20:55:37
【问题描述】:

我想知道是否有一种简单的方法来获取图像的色彩空间(即加载到 UIImage 中的图像)?例如,我有一个 TIFF 图像,我希望能够确定它是否使用 RGB 颜色空间。有没有一种简单的方法可以在不操作像素数据的情况下做到这一点?我知道有一些 CGColorSpace 函数,但它们似乎都没有这样做,只是创建颜色空间并操纵它们(以及更高级的函数)。

提前致谢。

【问题讨论】:

    标签: iphone uiimage cgcolorspace


    【解决方案1】:

    你必须通过CGImage来获取色彩空间。您可以使用以下函数/属性行来做到这一点:

    @property(nonatomic, readonly) CGImageRef CGImage
    
    CGColorSpaceRef CGImageGetColorSpace (
       CGImageRef image
    );
    

    因此,要获得图像的色彩空间,您可以:

    CGColorSpaceRef colorspace = CGImageGetColorSpace([myUIImage CGImage]);
    

    当然,确保遵循 CG 对象的获取/创建/复制规则。

    【讨论】:

      【解决方案2】:

      斯威夫特

      获取 UIImage 的色彩空间:

      let colorSpace = myUIImage.cgImage?.colorSpace
      

      检查色彩空间类型的示例代码:

      if colorSpace == CGColorSpace(name: CGColorSpace.sRGB) && colorSpace != nil {
        print("valid sRGB")
      }
      

      有关色彩空间类型的完整列表,请参阅 Apple's CGColorSpace Documentation "Accessing System-Defined Color Spaces"

      【讨论】: