J'ai jeté un oeil à la classe ColorSpace, et trouvé la constante TYPE_HLS
(vraisemblablement est juste HSL dans un ordre différent). Puis-je utiliser cette constante pour créer un Color
à partir de la teinte, de la saturation et de la luminosité? Sinon, existe-t-il des classes Java pour cela, ou dois-je écrire le mien?Comment utiliser l'espace de couleurs HSL en Java?
Répondre
Je l'ai trouvé:
Color.getHSBColor(float h, float s, float b)
Eh bien, HSB n'est pas exactement le même que HSL. –
par exemple. 'Color.getHSBColor (0, 1, 1)' retournerait la couleur en rouge, mais si vous vouliez la couleur pour (H = 0, S = 1, L = 1) vous devriez obtenir du blanc. –
@Andrei: En effet. http://en.wikipedia.org/wiki/HSL_and_HSV: "HSV représente la teinte, la saturation et la valeur, et est également souvent appelé HSB (B pour la luminosité)." – JAB
Peut-être this aidera. Le JDK ne semble pas très utile lorsque vous souhaitez utiliser des couleurs dans un autre espace colorimétrique.
Edit: En ColorSpace.getName(idx)
il y a ce petit extrait:
case ColorSpace.TYPE_HLS:
compName = new String[] {"Hue", "Lightness",
"Saturation"};
il était ce que vous pensiez, mais en regardant la hiérarchie de type de ColorSpace il ne semble pas être utilisé ou mis en œuvre de quelque manière que partout. ColorSpace est étendu par seulement deux autres classes BogusColorSpace et ICC_ColorSpace, donc je suppose qu'ils attendent des développeurs qu'ils créent leurs propres implémentations pour différents espaces de couleurs.
EDIT: Je me rends compte HSB = HSL, la réponse ci-dessous pour HSB.
Je ne pense pas qu'il soit nécessaire d'utiliser ColorSpaces ici. Essayez quelque chose comme ce qui suit:
float hue = 0.9f; //hue
float saturation = 1.0f; //saturation
float brightness = 0.8f; //brightness
Color myRGBColor = Color.getHSBColor(hue, saturation, brightness);
Si votre entrée est widgets swing/AWT, puis avec Java 7 JColorChooser vous pouvez obtenir la couleur par le HSV et des espaces HSL. http://java.dzone.com/articles/new-color-chooser-jdk-7
La plupart des réponses données semblent supposer que HSL == HSB, ce qui est faux. L'espace de couleurs HSB est utile (et utilisé) dans de nombreux cas, mais il existe une exception notable: CSS. Les fonctions de couleur CSS non-RVB, hsl() et hsla() sont HSL, pas HSB. En tant que tel, il est très utile de pouvoir convertir vers et depuis HSL en java.
Il y a un bon writeup sur le problème ici: http://tips4java.wordpress.com/2009/07/05/hsl-color/ TL; DR: le code est ici: http://www.camick.com/java/source/HSLColor.java
Les méthodes sont assez faciles à extraire celui-ci si vous ne voulez pas utiliser toute la classe.
Il ne semble pas que l'auteur de la classe comprenait une licence, bien que le contexte de la publication du blog semble impliquer le domaine public. Utilisez votre propre jugement.
Voici une implémentation simple qui renverra une couleur en fonction de la teinte, la saturation et les valeurs de luminosité de 0,0 à 1,0 ...
static public Color hslColor(float h, float s, float l) {
float q, p, r, g, b;
if (s == 0) {
r = g = b = l; // achromatic
} else {
q = l < 0.5 ? (l * (1 + s)) : (l + s - l * s);
p = 2 * l - q;
r = hue2rgb(p, q, h + 1.0f/3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1.0f/3);
}
return new Color(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255));
}
Cette réponse est inutile sans 'hue2rgb'. – Supuhstar
- 1. comment utiliser HSL dans Asp.net
- 2. convertir HSL ou HSV en RGB via jquery
- 3. Couleur Nom RGB/Hex/HSL/HSV etc
- 4. Recherche de couleurs de dégradé en Java
- 5. Comment utiliser les couleurs dans la sortie console en Scala ou Java?
- 6. Comment utiliser les couleurs dans Motif
- 7. problème de couleur HSL dans Firefox
- 8. couleurs étranges + Java + JColorChooser
- 9. Couleurs du bouton Java Swing
- 10. Comment utiliser JSpeex en java
- 11. Aide avec une calculatrice de couleurs en Java
- 12. WPF: Réinitialiser les couleurs pour utiliser les couleurs du modèle
- 13. Jeu de couleurs Java/Android à assembler
- 14. Thèmes de couleurs Eclipse - java et flex
- 15. Comment utiliser les espaces de couleurs BufferedImage et YCbCr?
- 16. Comment effectuer une transformation HSL sur une texture?
- 17. java swing border, en utilisant 2 couleurs ou plus
- 18. Comment les couleurs d'une image peuvent-elles être modifiées en utilisant CSS3?
- 19. comment utiliser Java jar en c/C++?
- 20. Comment utiliser .dll en Java ME
- 21. Comment utiliser Pattern Matcher en java?
- 22. comment puis-je utiliser BigInteger en java
- 23. Comment utiliser la bibliothèque org.hibernate en java?
- 24. Pourquoi Java ImageIO aplatit les couleurs JPEG
- 25. Java: comment utiliser Thread.join
- 26. Java: Comment utiliser BigInteger?
- 27. gamme de couleurs en javascript
- 28. comment utiliser java stringtokenizer?
- 29. Sélectionnez les couleurs récemment sélectionnées dans java
- 30. Comment remplacer les couleurs dans BufferedImage dans JAVA
Le « top » réponse donnée ci-dessous est faux. HSB n'est pas la même chose que HSL. Vous finirez par obtenir beaucoup de couleurs plus sombres que prévu. J'ai ajouté un exemple d'implémentation de HLS (HSL) ci-dessous. – xtempore