iOS 10에서 도입된 확장 sRGB 색 공간(Extended sRGB Color Space)이란?
시작하기 전에 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 9
UIDeviceRGBColorSpace 1 0 1 1
iOS 10
UIExtendedSRGBColorSpace 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 ↩
Reference
이 문제에 관하여(iOS 10에서 도입된 확장 sRGB 색 공간(Extended sRGB Color Space)이란?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mishimay/items/0f55af3db18ab84870e6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)