Conversion de HSV (HSB en Java) en RGB sans utiliser java.awt.Color (non autorisé sur Google App Engine)
J'ai pensé que je devrais poster cette question, même si j'ai déjà trouvé une solution, comme une implémentation de Java n'était pas disponible quand j'ai cherché pour elle.
À l'aide de HSV au lieu de RVB permet la génération de couleurs avec la même saturation et de la luminosité (quelque chose que je voulais).
Google App Engine n'autorise pas l'utilisation de java.awt.De la couleur, afin de faire ce qui suit pour convertir entre HSV et RGB n'est pas une option:
Color c = Color.getHSBColor(hue, saturation, value);
String rgb = Integer.toHexString(c.getRGB());
Edit: j'ai déplacé ma réponse comme décrit dans le commentaire de Nick Johnson.
Ex animo, - Alexander.
source d'informationauteur yngling
Vous devez vous connecter pour publier un commentaire.
Je ne sais rien au sujet de la couleur de mathématiques, mais je peux offrir cette alternative structure du code, qui chatouille mon sens de l'esthétique, car il fait évident pour moi la façon dont chacun des 6 cas est juste un autre permutation de valeur, t et p. (J'ai aussi une peur irrationnelle de long si les autres chaînes).
Vous devez utiliser le HSBtoRGB de mise en œuvre fournis par Oracle, la copie de son code source dans votre projet. java.awt.La couleur est open-source. Les algorithmes fournis par Peter Recore et Yngling ne sont pas robustes et sera de retour RVB illégale des valeurs comme "256,256,0" pour certaines entrées. Oracle mise en oeuvre est robuste, l'utiliser à la place.
Mon code pour la conversion:
Exemple d'utilisation sur Android:
La solution a été trouvée ici: http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/
Martin Ankerl fournit un bon post sur le sujet, et fournit un script Ruby. Pour ceux qui sont trop occupés (ou paresseux) pour la mettre en œuvre en Java, voici celui que j'ai fait (je suis sûr qu'il peut être écrit de manière plus efficace, n'hésitez pas à commenter):
Utilisation ColorUtils qui fournit
Et
Méthodes qui sont très faciles à convertir les uns les autres!
Par exemple:
Maintenant obtenir la couleur
Maintenant obtenir la lgv
Ici est la code source.
La réponse par @Pierre Recore ne pas utiliser de l'arrondissement.
Probablement un peu plus de bonne façon de l'utiliser est de copier le contenu de java.awt.La couleur et c'est la façon dont il a regardé dans la version 6 de Java:
Arrondi ici semble être correct.
Utilisant SWT vous pouvez utiliser l'extrait de code suivant: