Frage

Ich versuche, Farbe einzelner Pixel in einer BufferedImage (TYPE_INT_RGB) mit setRGB(), aber ich bin nicht sicher, wie die RGB-Werte zu formatieren. Ich möchte das Ergebnis als eine ganze Zahl. Gibt es eine Methode, die drei int Werte (rot, grün, blau) und gibt eine ganze Zahl korrekt formatiert für setRGB() nehmen?

War es hilfreich?

Lösung

Angenommen, Sie haben Ints r, g und b, können Sie tun:

int pixel = (r << 16) | (g << 8) | b;

Das ist, weil Pixel in einem BufferedImage sind 4-Byte-ints. Der 4-Byte repräsentieren Alpha, Rot, Grün und Blau, in dieser Reihenfolge. Also, wenn Sie rot links von zwei Bytes und grün links um ein Byte verschoben, dann bitweise oder r, g und b, werden Sie eine gültige Pixel auf die Verwendung mit setRGB() erhalten.

Andere Tipps

new Color(red, green, blue).getRGB();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top