HSV 转换的错误结果?
Wrong results for the HSV conversion?
我有这段代码可以将 RGB 转换为 HSV
func rgbToHSV (_ r:Double, _ g:Double, _ b:Double) -> (Double, Double, Double) {
let cor01 : (Double) -> CGFloat = { valor in
return CGFloat(valor / 255)
}
let corRGB = UIColor(red: cor01(r),
green: cor01(g),
blue: cor01(b),
alpha: 1.0)
var hue : CGFloat = CGFloat.infinity
var saturation : CGFloat = CGFloat.infinity
var brightness : CGFloat = CGFloat.infinity
var alpha : CGFloat = CGFloat.infinity
_ = corRGB.getHue(&hue,
saturation:&saturation,
brightness:&brightness,
alpha:&alpha)
return (Double(hue), Double(saturation), Double(brightness))
}
我将 RGB = (168, 131, 126) 转换为 HSV 并得到
HUE = 0.019841269841269771
SAT = 0.24999999999999994
BRI = 0.6588235294117647
我用this site and this site的在线转换,都给了我7度的色相
这是怎么回事?
之所以这样,是因为0.01984126984126977
的值是作为一个整体的一部分来的,整体是360度的。您可以乘以 360
并得到 7.1428571428571175
.
的值
let result = rgbToHSV(168, 131, 126)
print(result)
print(result.0 * 360)
输出:
(0.01984126984126977, 0.24999999999999994, 0.6588235294117647)
7.1428571428571175
我有这段代码可以将 RGB 转换为 HSV
func rgbToHSV (_ r:Double, _ g:Double, _ b:Double) -> (Double, Double, Double) {
let cor01 : (Double) -> CGFloat = { valor in
return CGFloat(valor / 255)
}
let corRGB = UIColor(red: cor01(r),
green: cor01(g),
blue: cor01(b),
alpha: 1.0)
var hue : CGFloat = CGFloat.infinity
var saturation : CGFloat = CGFloat.infinity
var brightness : CGFloat = CGFloat.infinity
var alpha : CGFloat = CGFloat.infinity
_ = corRGB.getHue(&hue,
saturation:&saturation,
brightness:&brightness,
alpha:&alpha)
return (Double(hue), Double(saturation), Double(brightness))
}
我将 RGB = (168, 131, 126) 转换为 HSV 并得到
HUE = 0.019841269841269771
SAT = 0.24999999999999994
BRI = 0.6588235294117647
我用this site and this site的在线转换,都给了我7度的色相
这是怎么回事?
之所以这样,是因为0.01984126984126977
的值是作为一个整体的一部分来的,整体是360度的。您可以乘以 360
并得到 7.1428571428571175
.
let result = rgbToHSV(168, 131, 126)
print(result)
print(result.0 * 360)
输出:
(0.01984126984126977, 0.24999999999999994, 0.6588235294117647)
7.1428571428571175