Определение цветового пространства UIImage

Мне интересно, есть ли простой способ получить цветовое пространство изображения (то есть изображение, загруженное в UIImage)? Например, у меня есть изображение TIFF, и я хотел бы иметь возможность определить, использует ли оно цветовое пространство RGB или нет. Есть ли простой способ сделать это без манипулирования данными пикселей? Я знаю, что есть некоторые функции CGColorSpace, но, похоже, ни одна из них не делает этого, просто создает цветовые пространства и манипулирует ими (и гораздо более продвинутыми функциями).

Заранее спасибо.

2 ответа

Решение

Вы должны получить цветовое пространство через CGImage. Вы можете сделать это с помощью следующей строки функций / свойств:

@property(nonatomic, readonly) CGImageRef CGImage

CGColorSpaceRef CGImageGetColorSpace (
   CGImageRef image
);

Таким образом, чтобы получить цветовое пространство изображения, вы должны сделать:

CGColorSpaceRef colorspace = CGImageGetColorSpace([myUIImage CGImage]);

И, конечно же, обязательно следуйте правилам получения / создания / копирования объектов CG.

Быстрый

Чтобы получить цветовое пространство UIImage:

      let colorSpace = myUIImage.cgImage?.colorSpace

Пример кода, который проверяет тип цветового пространства:

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

Полный список типов цветовых пространств см. В документации Apple CGColorSpace «Доступ к системным цветовым пространствам» .

Другие вопросы по тегам