9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android開発、RGBカラーからHSVでの明度(Bright)調整、

Last updated at Posted at 2018-05-17

私は今までの業務はiOSを担当してきましたが今の現場ではエンジニアが少ないからかAndroidの開発にも携わっています。
これからのキャリア形成において非常に貴重な経験なので若輩者ですがJavaの勉強をしています。
(トレンド的にはKotlinなんでしょうけど)
そこで実務で詰まってしまったメソッドについて残しておこうと思います。

Colorから明度の調整

bright.java

    public int convertColorFromHSV(final int color, final float brightness) {
        final float[] hsv = new float[3];
        Color.colorToHSV(color, hsv);
        hsv[2] -= brightness;
        return Color.HSVToColor(hsv);
    }

これで明度を調整することができます。
明度のMaxは1(100%)なので1から何%を暗くするかの調整となります。
例えば、明度を元のカラーから15%落としたい場合には
元のカラーにcolorbrightness に 0.15 を代入してやればいいです。

(参考) Android ドキュメント Color
https://developer.android.com/reference/android/graphics/Color

ちなみに
明度というのはHSV色空間の1種です。
HSV空間は、コンピュータグラフィックスで扱う色空間の1つで、
色相(Hue)、
彩度(Saturation Chroma)、
明度(Brightness Lightness Value)
の3成分から構成されてます。

ColorクラスはRGB色空間、もしくはARGB 色空間です。

上記のメソッドで

Color.colorToHSV(color, hsv);

を叩くと float[] hsvの配列に
hsv 配列のインデクス 0, 1, 2 に対応して、色相、彩度、明度が格納されます。
hsv[0] : 色相
hsv[1] : 彩度
hsv[2] : 明度
です。

色相に関しては 0.0 ~ 360.0 の値が格納されています。
彩度、
明度に関しては 0.0 ~ 1.0 の値が格納されています。

これのcolorToHSVのメソッドの使い方がわからずに小1時間ほどハマっておりました。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?