Как рассчитать яркость цвета RGB? - PullRequest
3 голосов
/ 27 февраля 2012

у меня есть функция:

-(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 г: 67 b: 73. возврат функции 72.760002. В фотошопе яркость для этого цвета составляет 33%. Что не так?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 27 февраля 2012

Используйте 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
    }
}
4 голосов
/ 27 февраля 2012

Ваши значения RGB варьируются от 0 до 255, а не от 0 до 99 - вам нужно сначала разделить их, если вы хотите получить процент:

float brightness = (red / 255.0) * 0.3 + (green / 255.0) * 0.59 + (blue / 255.0) * 0.11;

Кроме того, нет единого преобразования между значениями «яркость» и RGB - возможно, Photoshop использует другую формулу, чем вы. Если вы хотите узнать больше, я рекомендую "FAQ по гамме" и "FAQ по цвету" от Charles Poynton.

...