我有我的功能:
-(void)rgbToHSBWithR:(float)red G:(float)green B:(float)blue {
float brightness = red * 0.3 + green * 0.59 + blue * 0.11; // found in stackoverflow
NSLog(@"%f",brightness);
}
这对我不起作用。
例如:r:84 g:67 b:73。功能返回72.760002。在Photoshop中,此颜色的亮度为33%。怎么了?
感谢。
答案 0 :(得分:5)
使用UIColor
或NSColor
:
-(void)rgbToHSBWithR:(float)red G:(float)green B:(float)blue {
// assuming values are in 0 - 1 range, if they are byte representations, divide them by 255
UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1];
float h, s, b;
if ([color getHue:&h saturation:&s brightness:&b alpha:NULL])
{
// h, s, & b now contain what you need
}
}
答案 1 :(得分:4)
您的RGB值范围为0到255,而不是0到99 - 如果您想以百分比结束,则需要先将它们分开:
float brightness = (red / 255.0) * 0.3 + (green / 255.0) * 0.59 + (blue / 255.0) * 0.11;
此外,“亮度”和RGB值之间没有单一转换 - Photoshop可能使用的公式与您不同。如果您想了解更多信息,我建议Charles Poynton使用"Gamma FAQ"和"Color FAQ"。