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

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

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


person Matt    schedule 12.11.2010    source источник


Ответы (2)


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

@property(nonatomic, readonly) CGImageRef CGImage

CGColorSpaceRef CGImageGetColorSpace (
   CGImageRef image
);

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

CGColorSpaceRef colorspace = CGImageGetColorSpace([myUIImage CGImage]);

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

person Dylan Lukes    schedule 12.11.2010

Свифт

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

let colorSpace = myUIImage.cgImage?.colorSpace

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

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

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

person Marcy    schedule 06.07.2021