나는 색깔이 UIColor(displayP3Red: 1, green: 0, blue: 0.8, alpha: 1)
입니다. 나는 같은 색조와 밝기로 불투명 한 버전을 만들고 싶지만 원본의 채도 절반 정도는 채도가 떨어집니다. 어떻게해야합니까?디스플레이 P3 컬러의 채도가 낮은 버전은 어떻게 만듭니 까?
1
A
답변
0
extension UIColor {
// Calling this with 0.5 as argument returns a color whose saturation is 50% of that of the receiver.
func desaturatedBy(fraction: CGFloat) -> UIColor {
var hue: CGFloat = 0
var saturation: CGFloat = 0
var brightness: CGFloat = 0
var alpha: CGFloat = 0
let success = getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha)
assert(success)
saturation *= fraction
return UIColor(hue: hue, saturation: saturation, brightness: brightness, alpha: alpha)
}
}
이것은 제 때문에 작동 getter는 확장 sRGB 색 공간에서 HSB를 반환하고 UIColor의 이니셜 라이저는 sRGB 확장 색 공간에서 HSB를 사용합니다. 그래서 우리는 어떤 색 공간 변환도 할 필요가 없습니다.
0
DCI-P3의 정규화 된 기본 매트릭스 (NPM)를 계산할 수 있다면 간단해야합니다. NPM의 중간 행은 휘도 계수를 나타냅니다. 당신이 그런 일을 할 수있는 50 % 채도하기를 원한다면, 당신의 주어진 색의 휘도를 나타내는 Y으로
import numpy as np
import colour
# Computing the sRGB Luminance Equation, you should be familiar with the
# resulting Luminance factors.
print(colour.RGB_luminance_equation(
colour.sRGB_COLOURSPACE.primaries,
colour.sRGB_COLOURSPACE.whitepoint))
# Y = 0.212639005872(R) + 0.715168678768(G) + 0.0721923153607(B)
# Computing the DCI-P3 Luminance Equation.
print(colour.RGB_luminance_equation(
colour.DCI_P3_COLOURSPACE.primaries,
colour.DCI_P3_COLOURSPACE.whitepoint))
# Y = 0.209491677913(R) + 0.721595254161(G) + 0.0689130679262(B)
# Computing Luminance of given RGB colour, this is assuming it is representing linear values.
DCI_P3_LUMINANCE_FACTORS = np.array([0.209491677913, 0.721595254161, 0.0689130679262])
RGB = np.array([1.0, 0.0, 0.8])
Y = np.dot(RGB, DCI_P3_LUMINANCE_FACTORS)
print(Y)
# 0.264622132254
: 나는 당신이 선형 값을 사용하고 있다고 가정, Colour를 사용하여이를 설명합니다 :
LERP (RGB, [Y, Y, Y, 0.5)
iOS에서이를 수행 할 수있는 방법이 있습니까? 감사. –
아마도 실제로 필요한 것은 내적과 직선 보간을 할 수 있다는 것입니다. –
BTW, Python은 가져 오기 색상에서 색상을 찾을 수 없다는 오류 메시지를 표시합니다. 어떤 MacPorts 모듈을 설치해야합니까? 파이썬 3.6을 사용하고 있습니다. 그게 너무 오류를주고 있었기 때문에 나는 이미 numpy를 설치했다. 감사. –