Wie mache ich in Java aus einer Color eine RGB?

5 Antworten

Du kannst die grauenhaft falsch benannte Methode getRGB() der Color-Klasse nutzen, um einen Integer im Format 0xAARRGGBB zu erhalten.

Es ist jetzt schon fast zwei Jahrzehnte her, aber ich erinnere mich noch genau an die Debug-Orgie, bei der ich heraus finden musste, dass die Funktion eigentlich getARGB() heißen müsste. Damals waren die IDEs noch eher mäßig und die API-Docs sind hier im ersten Satz bis heute (!) auch alles andere als hilfreich (es sei denn, man kennt die restliche API komplett auswendig).

(Java hat eine wunderbare Dokumentation, und eine mächtige Standard-Bibliothek, aber solche Dinge nerven tierisch; vor allem wenn sie nach Jahrzehnten immer noch nicht verbessert wurden.)

Zurück zu deiner Frage: Um aus deinem Color-Objekt eine RGB-Farbe als Ganzzahl zu bekommen - die du dann auch als Hex-Wert darstellen kannst - einfach maskieren:

Color orange = new Color(0xFFBB00);
int rgb = orange.getRGB() & 0x00FFFFFF;

Danach musst du den Integer "rgb" nur noch als sechs Zeichen breiten Hexwert formatieren und evtl. ein formschönes "#" bzw. "0x" voranstellen. :)

String.format("#%06x", rgb); // #ffbb00
String.format("0x%06X", rgb); // 0xFFBB00

Schönen Tag noch! :)

PS: Boah, die Konstruktoren von Color und die dazugehörigen API-Docs sind ja noch katastrophaler! Da wird der Parameter "rgba" genannt, erwartet wird aber das Format "argb".

Ich hoffe, die Klasse wird in Java 9 generalüberholt! ><

Meinst du vielleicht statt RGB HEX?

Also statt 255,255,255 eben #FFFFFF?

String hex = String.format("#%02x%02x%02x", 255, 255, 255);



Woher ich das weiß:Berufserfahrung – Beruf, Schule, Hobby und eigene Erfahrungen

In den Konstruktor gibst du doch die RGB-Werte an wo willst du jetzt nochmal RGB Werte angeben?