문제

나는 내 기능을 가지고있다 :

-(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 %입니다.뭐가 잘못 됐니?

감사합니다.

도움이 되었습니까?

해결책

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
    }
}
.

다른 팁

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 " "Charles Poynton의"Color FAQ "

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top