iOS 10에서 도입된 확장 sRGB 색 공간(Extended sRGB Color Space)이란?

iOS 10부터 기본값으로 사용되는 확장 sRGB 색 공간에 대해 설명합니다.

시작하기 전에 sRGB 색 공간 (not 확장)이란 무엇입니까?



아래의 CIE 색도도 1 중 점선의 삼각형으로 둘러싸인 부분이 sRGB 색 공간입니다.
색이 붙어 있는 범위가 사람이 볼 수 있는 모든 색입니다만, 그 안의 특정의 범위를 한정해 sRGB 색 공간이라고 부르고 있습니다.



sRGB 색공간은 컴퓨터의 세계에서 일반적으로 자주 사용되고 있으며, 색공간에 대해 특별히 지정하지 않을 때는 어둡게 이 sRGB 색공간을 가리키는 경우가 많습니다.

CIE 색도도나 RGB 색 공간의 자세한 설명은 다른 기사에 썼으므로 이쪽을 봐 주세요.

RGB 값만으로는 색이 하나로 정해지지 않는다.
htps : // 코 m / 미시마 y / ms / 에 1 2

sRGB 색 공간 문제



위의 CIE 색도 다이어그램을 보면 알 수 있듯이 sRGB 색 공간은 사람이 볼 수있는 모든 색상을 다루지 않습니다.
이것을 해결하는 것이 확장 sRGB 색 공간입니다.

확장 sRGB 색 공간(Extended sRGB Color Space)이란?



sRGB 색 공간에서는, R, G, B 각각에 대해 0.0~1.0 (또는 0~255 ) 의 범위에서 수치를 지정하는 것으로 특정의 색을 표현했습니다.
한편, 확장 sRGB 색 공간은 마이너스의 수치나 1을 넘는 수치를 허용합니다. 이것은 기존의 sRGB 색 공간에서의 지정치는 그대로, 그 외의 모든 색을 표현 가능하게 합니다.

사용방법



iOS 10.0 이상부터 사용 가능 2
UIColor의 디폴트가 이 확장 sRGB 색 공간이므로 3 , 특히 의식하지 않고 사용할 수 있습니다.
실제로 지금 현재 의식하지 않고 사용하고 있는 분이 많다고 생각합니다.

다음 코드는 iOS 9와 iOS 10에서 다른 값을 출력합니다.
let color = UIColor(red: 1.2, green: -0.3, blue: 100, alpha: 1)
print(color)

iOS 9UIDeviceRGBColorSpace 1 0 1 1
iOS 10UIExtendedSRGBColorSpace 1.2 -0.3 100 1
iOS 9 에서는 0~1 의 범위에 값이 반올림되고 있는 한편, iOS 10 에서는 표기가 UIExtendedSRGBColorSpace 이 되어 부의 값도 큰 값도 그대로인 것을 알 수 있습니다.

다른 색 공간에서 변환하는 방법



iOS는 다른 RGB 색 공간으로 변환하는 방법을 제공합니다 4

예를 들어 Display P3 색 공간에서 확장 sRGB 색 공간으로 변환하는 코드를 작성해 보겠습니다.
아래 그림 1 에 있는 것처럼 Display P3 색 공간과 sRGB 색 공간에서는 녹색 부분에 있는 정점의 위치가 상당히 어긋나 있습니다.


Display P3 색공간에 있어서의 녹색은 sRGB 색공간의 외측에 존재한다, 즉 확장 sRGB 색공간에 있어서 RGB 의 값이 0~1 에 들어가지 않으면 안됩니다.
그것을 확인합시다.
let p3Color = UIColor(displayP3Red: 0, green: 1, blue: 0, alpha: 1)
let extendedSRGBColorSpace = CGColorSpace(name: CGColorSpace.extendedSRGB)!
let extendedSRGBColor = p3Color.cgColor.converted(to: extendedSRGBColorSpace, intent: .defaultIntent, options: nil)
print(extendedSRGBColor)

iOS 10[<CGColorSpace 0x600003d69140> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1; extended range)] ( -0.511767 1.01831 -0.310667 1 )
이와 같이 Display P3 색 공간에 있어서의 (R: 0, G: 1, B: 0) 는, 확장 sRGB 색 공간에서는 (R: -0.511767, G: 1.01831, B: -0.310667) 가 되었습니다.
예상대로 0~1 범위를 초과했습니다.
G는 약 1.02로 미세한 반면, R은 약 -0.5로 상당히 크게 마이너스로 흔들리고 있는 것이 흥미롭다.

환경


Apple Swift version 4.2 (swiftlang-1000.11.37.1 clang-1000.11.45.1)
Target: x86_64-apple-darwin18.2.0



htps : //로 ゔぇぺぺr. 아 ぇ. 이 m/ゔぃ에서 s/pぁy/ㅜwdc2016/712/ 

htps : //에서 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 이것 g 등 p 히 cs / cg 코 rs 파세 / 1644735 

h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s Chion s / 30236619 / U-T-S-Te-U-Fu lt-ko-rs Pase-Fu-r 우이코 r 

htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 이것 g 등 p 히 cs / cg 코 r / 1455493 - 안녕 r d 

좋은 웹페이지 즐겨찾기