代码之家  ›  专栏  ›  技术社区  ›  olha

如何从EXIF编号创建CGColorSpace?

  •  1
  • olha  · 技术社区  · 4 年前

    我有一个 CGImageSourceRef 使用以下元数据:

    // CGImageSourceCopyMetadataAtIndex
    <CGImageMetadata 0x10225ed50> (
        exif:SubsecTimeDigitized = 000
        exif:ColorSpace = 1
        // and more ... 
    )
    
    
    // CGImageSourceCopyPropertiesAtIndex
    {
        ProfileName = "sRGB IEC61966-2.1";
        "{Exif}" =     {
            ColorSpace = 1;
        };
        // and more ...
    } 
    

    这里的“颜色空间”是“1”。我见过所有的建筑工人 CGColorSpaceRef ,它们都不会从数字创建颜色空间。

    CGColorSpaceCreateWithName(CFStringRef name) 接受一个名称,它不是enum,只是一组硬编码字符串,如 kCGColorSpaceDisplayP3 .

    如何创建一个 CGColorSpace 1 神奇数字?

    0 回复  |  直到 4 年前
        1
  •  0
  •   olha    4 年前

    嗯,目前我正在使用 CoreImage 方法简单且快速:

    CIImage* ciImage = [CIImage imageWithData:rawData];
    CGColorSpaceRef cs = ciImage.colorSpace;
    

    CIImage 如果使用预先分配的字节创建,则不会产生内存开销。 如果不渲染,也不会产生性能开销,例如使用 [CIContext render]