Komischer RGB Farbcode beim BufferedImage in Java?
Hallo,
in meinem Programm habe ich den sRGB-Wert jedes Pixels von einem Bild abgefragt und bekomme für Schwarz: -16777216 und für Weiß: -1.
Versteh ich nicht. Ein RGB-Code ist doch eigentlich sowas wie 255|0|0 für z.B. Rot und nicht so eine komische negative Zahl.
1 Antwort
- Starte den Windows-Taschenrechner (calc.exe),
- wähle im Menü die "Programmierer"-Ansicht aus und
- dann kopiere die Zahlen ins Eingabefeld.
Im Feld "Hex" siehst du den Hexadezimalwert, und wenn du daraufklickst, kannst du auch in Hex damit weiterrechnen und z.B. direkt in Hex etwas eingeben.
-16777216 wird zu FFFFFFFFFF000000. Interessant sind nur die letzten sechs Ziffern, also 00 00 00. Das sind die Werte für RGB nacheinander in Hex geschrieben, und die kannst du mit einem zweiten Taschenrechner von Hex nach Dezimal umrechnen.
-1 hat nur "F"s, und die letzten sechs Ziffern sind dann auch "F"s. F steht in Hex für den dezimalen Wert 15, d.h. FF steht für den Dezimalwert 15*16+15=255.
Das steht für den Alphakanal, der die Deckkraft angibt. Wenn da der Wert 0 steht, ist das Bild vollständig transparent; FF bedeutet, dass es den Hintergrund komplett verdeckt (so wie man das halt kennt).
Ich habe jetzt -16777216 mithilfe von Interger.toHexString() in einen String umgewandeln, der lautet: ff000000. Warum stehen da jetzt noch zwei "f's" vor? Bei weiß kommt ffffffff raus, also wieder 2 "f's" zu viel...