3

私は自分の機能を持っています:

-(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% です。どうしたの?

ありがとう。

4

2 に答える 2

5

RGB 値の範囲は 0 から 99 ではなく、0 から 255 です。最終的にパーセンテージを求める場合は、最初にそれらを分割する必要があります。

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

また、「明るさ」と RGB 値の間の単一の変換はありません。Photoshop は、あなたとは異なる式を使用している可能性があります。もっと詳しく知りたい場合は、Charles Pointon による「ガンマ FAQ」「カラー FAQ」をお勧めします。

于 2012-02-27T19:03:31.007 に答える
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
    }
}
于 2012-02-27T19:05:39.793 に答える