Détecter et filtrer des couleurs trop claires ou foncées en JAVA

Dans la dernière application Android que j’ai développé, j’utilise un Color Picker (voir ci-dessous) plutôt sympa mais les couleurs trop claires posent problème. J’ai défini une couleur de police très claire (presque blanche) et si l’utilisateur sélectionne une couleur de fond claire, on n’y voit plus rien!

J’ai donc trouvé une solution et j’ai décidé de partager cette ‘astuce’ avec vous.

colorpicker_android_java

 

Etape 1 : Récupérer/convertir la couleur

Pour commencer, il faut avoir la couleur au format “int(si c’est le cas, passez directement à l’étape 2).

Si vous récupérez une couleur au format hexadécimal, vous devez la convertir en utilisant les deux lignes ci-dessous :

[java]String hex = "#FFFFFF";
int value = Integer.parseInt(myString.replaceFirst("#", ""), 16); [/java]

Etape 2 : Obtenir le taux de luminosité

Le taux de luminosité s’obtient à partir de l’integer d’une couleur.

Si le taux est inférieur à 128, la couleur se rapproche du noir.

Si le taux est supérieur à 128, la couleur se rapproche du blanc.

[java] public static int getBrightness(int rgb)
{
int bri= ( 77 * ((argb>>16)&255)
+ 150 * ((argb>>8)&255)
+ 29 * ((argb)&255))>>8;
return bri;
}[/java]

Il vous suffit alors de tester le taux de luminosité en utilisant la valeur retournée par la méthode “getBrightness“.

Etape 3 : Test de la valeur

Ci-dessous, je filtre les couleurs supérieures à 150 (donc claires, se rapprochant du blanc).

[java] int lum = getBrightness(_col);
if (lum > 150)
{
_msgerreur = "Cette couleur est trop claire, vous n’y verrez rien.";
Toast.makeText(getBaseContext(), "Erreur: " + _msgerreur, Toast.LENGTH_SHORT).show();
}[/java]

 

46 Comments Détecter et filtrer des couleurs trop claires ou foncées en JAVA

  1. W88

    793744 127497This internet site can be a walk-through its the details you wanted concerning this and didnt know who to ask. Glimpse here, and you will undoubtedly discover it. 857050

    Reply
  2. 3d printing software

    702731 744436Oh my goodness! an incredible write-up dude. Numerous thanks Even so My business is experiencing trouble with ur rss . Do not know why Struggle to sign up to it. Can there be every person acquiring identical rss dilemma? Anyone who knows kindly respond. Thnkx 394605

    Reply
  3. Deb

    First of all I want to say great blog! I had a quick
    question which I’d like to ask if you do not mind.
    I was interested to know how you center yourself and clear your head before writing.

    I’ve had trouble clearing my thoughts in getting my thoughts out there.
    I do enjoy writing however it just seems like the
    first 10 to 15 minutes are wasted simply just trying to figure
    out how to begin. Any suggestions or tips? Kudos!

    Reply

Leave a Reply

Your email address will not be published.