UIColor から色の明るさを取得する : Objective-C プログラミング
PROGRAM
UIColor から色の明るさを取得する
UIColor で表現された色の明るさを取得する方法について調べてみました。
インターネットで調べてみると、どうも人によって微妙に違うこともあるようで、次のような変換式が見つかってきました。
明るさ - その1
(77.0 × 赤 + 28.0 × 緑 + 151.0 * 青) ÷ 256.0
明るさ - その2
(77.0 × 赤 + 151.0 × 緑 + 28.0 * 青) ÷ 256.0
明るさ - その3
赤, 緑, 青 の中での最大値
どちらを使ってもそれなりに、明るさの具合として使えそうな値が計算できるような感じでしたけど、色の原理を理解できていない自分としては、どれが正しい数値かどうかの判断ができないところでした。
もしかして、明度 (H) と輝度 (Y) とが言う言葉もあるので、Brightness がどちらを指すかで話に差が出てきているのかと思いつつも、どうにも確信までは至りません。
そんな中、iOS 5 から UIColor の HSB を取得するメソッドが実装されたので、それを使って計算してみると、この場合などうやら、赤・緑・青の中から最大の値を取得できるように見えました。
// iOS 5 から、HSB の要素を取得するメソッドが実装されました。
CGFloat hue;
CGFloat saturation;
CGFloat brightness;
CGFloat alpha;
[color getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha];
iOS 5 では、このような感じで明るさを取得することができました。
もしこれに合わせるのであれば、取得した RGB カラーの中から最大の値を持つ要素を取り出せば、明るさとして使えるのかもしれません。RGB 値の取得方法については UIColor から RGB を取得する を参考にしてください。
[ もどる ]