Example usage for android.graphics Color colorToHSV

List of usage examples for android.graphics Color colorToHSV

Introduction

In this page you can find the example usage for android.graphics Color colorToHSV.

Prototype

public static void colorToHSV(@ColorInt int color, @Size(3) float hsv[]) 

Source Link

Document

Convert the ARGB color to its HSV components.

Usage

From source file:Main.java

/**
 * Darken a color to a fraction of its current brightness.
 * @param color The input color./*from ww  w .  j a  va  2  s.  c o  m*/
 * @param darkenFraction The fraction of the current brightness the color should be.
 * @return The new darkened color.
 */
public static int getDarkenedColor(int color, float darkenFraction) {
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[2] *= darkenFraction;
    return Color.HSVToColor(hsv);
}

From source file:Main.java

public static synchronized int getLighterColor(final int color) {
    // Get lighter color
    final float[] hsv = new float[3];

    Color.colorToHSV(color, hsv);
    hsv[1] *= 0.2f; // Saturation
    hsv[2] *= 1.5f; // Value
    return Color.HSVToColor(hsv);
}

From source file:Main.java

public static synchronized int getDarkerColor(final int color) {
    // Get darker color
    final float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[2] *= 0.7f;/*from  w  w w .  j  a v a 2s  . c o m*/
    return Color.HSVToColor(hsv);
}

From source file:Main.java

public static synchronized int getStackedBackgroundColor(final int color) {
    // Get darker color
    final float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[2] *= 0.2f;/* ww w.  j a  v  a2  s  .c  o m*/
    return Color.HSVToColor(hsv);
}

From source file:Main.java

public static Bitmap filterImage(Bitmap src) {
    if (src == null) {
        return null;
    }/*ww w  .  j a  va2 s. co  m*/

    final float minV = 0.7f;
    final float maxV = 0.85f;

    float[] hsvVals = getMainHSV(src);
    float deltaV = 0;
    if (hsvVals[2] < minV) {
        deltaV = minV - hsvVals[2];
    } else if (hsvVals[2] > maxV) {
        deltaV = maxV - hsvVals[2];
        if (hsvVals[1] < 0.1f) {
            deltaV *= 2;
        }
    }
    if (Math.abs(deltaV) < 0.0001f) {
        return src;
    }

    int w = src.getWidth();
    int h = src.getHeight();
    int[] pixels = new int[w * h];
    src.getPixels(pixels, 0, w, 0, 0, w, h);
    float[] HSV = new float[3];
    int index = 0;
    for (int y = 0; y < h; ++y) {
        for (int x = 0; x < w; ++x) {
            Color.colorToHSV(pixels[index], HSV);
            HSV[2] = clamp(HSV[2] + deltaV, 0f, 1f);
            pixels[index] = perferBlue(Color.HSVToColor(HSV));
            ++index;
        }
    }
    return Bitmap.createBitmap(pixels, w, h, Bitmap.Config.ARGB_8888);
}

From source file:Main.java

public static synchronized GradientDrawable getGradiant(final int color) {
    int[] colors;
    int darkerColor;
    // Get darker color
    final float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[2] *= 0.9f; // value component
    darkerColor = Color.HSVToColor(hsv);

    colors = new int[2];
    colors[0] = darkerColor;//from www.j  a  va 2 s .co m
    colors[1] = color;

    final GradientDrawable d = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, colors);
    d.setDither(true);

    return d;
}

From source file:Main.java

private static int setHSVParameter(int color, float newValue, int index) {
    float hsv[] = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[index] = newValue;/*from w ww .  ja v a 2 s .  co  m*/
    return Color.HSVToColor(hsv);
}

From source file:Main.java

/**
 * For devices with Jellybean or later, darkens the given color to ensure that white text is
 * clearly visible on top of it.  For devices prior to Jellybean, does nothing, as the
 * sync adapter handles the color change.
 *
 * @param color//from w w w  . ja v  a2  s. c  om
 */
public static int getDisplayColorFromColor(int color) {
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[1] = Math.min(hsv[1] * SATURATION_ADJUST, 1.0f);
    hsv[2] = hsv[2] * INTENSITY_ADJUST;
    return Color.HSVToColor(hsv);
}

From source file:Main.java

public static int getDarkerColor(final int color, final float ratio) {
    // Get darker color
    final float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    hsv[2] *= ratio;/*from   ww  w . j  a  v  a  2s  .  c  o  m*/
    return Color.HSVToColor(hsv);
}

From source file:Main.java

/**
 * Lighten a color by a specific factor.
 * //from   w w  w.  j a v  a2s .c om
 * @param color the color to lighten
 * @param factor the factor to apply; e.g. 150 makes the color 50% brighter, 50
 * makes the color 50% darker, 100 makes no change.
 * 
 * @return the lightened version of the color
 */
public static int lightenColor(int color, int factor) {
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    float s = hsv[1];
    float v = hsv[2] * factor / 100.0f;
    if (v > 1.0f) {
        // Value has overflowed, so adjust the saturation instead.
        s -= v - 1.0f;
        if (s < 0)
            s = 0;
        v = 1.0f;
    }
    hsv[1] = s;
    hsv[2] = v;
    return Color.HSVToColor(hsv);
}