RGB-Farbwert => dezimaler Farbwert

Hallo,

ich habe in einem Programm einen Farbraum von 0 bis 65535 und muss nun zwei Farben für diesen Farbraum berechnen.
Kann mir jemand sagen, wie ich aus den drei RGB-Werten, jeweils zwischen 0 und 255 die dezimale Zahl zwischen 0 und 65535 herausbekomme?

Gruß

Ralph

Hallo,

http://www.shodor.org/stella2java/rgbint.html

Suchanfragen:
http://www.google.de/search?q=RGB+to+int+howto
http://www.google.de/search?q=RGB+to+int+algorithm

Vielleicht findest du da etwas :wink:

Grüße Roman

Hallo Roman,

war nicht wirklich hilfreich, da Deine Links nicht mein Problem behandeln, sondern lediglich die Umrechnung von RGB in INT machen, das hätte ich auch selbst können - bzw. englishsprachige Suchanfragen enthalten, auch das habe ich längst selbst gemacht, aber ohne Erfolg.
Wenn Du nichts besseres auf Lager hast, macht es keinen Sinn auf eine Anfrage zu antworten, nur um etwas gesagt zu haben.

Gruss
Ralph

Hallo,

ich habe in einem Programm einen Farbraum von 0 bis 65535 und
muss nun zwei Farben für diesen Farbraum berechnen.
Kann mir jemand sagen, wie ich aus den drei RGB-Werten,
jeweils zwischen 0 und 255 die dezimale Zahl zwischen 0 und
65535 herausbekomme?

wenn ich das recht verstehe, willst Du die RGB-Anteile aus einwm 8bit-Farbraum in einen 16bit-Farbraum umrechnen. Dann kannst Du doch linear umrechnen. y = 65535 * x / 255

MfG,

ujk

Du möchtest RGB Werte in Hex umrechnen, richtig verstanden?

http://www.web-toolbox.net/webtoolbox/mathematik/rgb…

Nein, falsch verstanden.
Ich möchte RGB Farbwerte in eine Dezimalzahl zwischen 0 und 65535 umrechnen.

Nein, falsch verstanden.
Ich möchte RGB Farbwerte in eine Dezimalzahl zwischen 0 und
65535 umrechnen.

Was für ein Farbraum/Farbmodell ist denn das? Noch nie gehört/gelesen, daß ein Farbwert über (bis zu) fünfstellige Werte definiert wird.

Das ist ein relativ altes Muster, welches aus der alten DOS-Welt stammt. Man hat damals mit 16 Bit gearbeitet und diese 16 Bit in 2 Mal 5 und 1 Mal 6 Bit aufgeteilt. Das Ergebnis sind 65536 mögliche Farbwerte, die jeweils eine Farbnuance darstellen.

Gruß
Ralph

Nein, ich möchte aus einem 24 Bit Farbraum, der die Farben mit jeweils drei dreistelligen Zahlen für R, G und B darstellt in einen 16 Bit Farbraum umrechnen, der die Farben mit ganzzahligen Werten zwischen 0 und 65535 darstellt.
Ich bin mir durchaus darüber im Klaren, dass mir damit nur noch 65536 Farben zur Verfügung stehen, statt 16,7 Mio Farben, aber das Programm für das ich dies brauche, kann einfach nicht mehr.

Gruß
Ralph

Man lernt eben nie aus :wink:
.

Hallo,

ich habe in einem Programm einen Farbraum von 0 bis 65535 und
muss nun zwei Farben für diesen Farbraum berechnen.
Kann mir jemand sagen, wie ich aus den drei RGB-Werten,
jeweils zwischen 0 und 255 die dezimale Zahl zwischen 0 und
65535 herausbekomme?

Wenn ich den Wikipedia Artikel richtig verstehe setzt sich das wie folgt zusammen:

5 höchstewertige R-Bits + 6 höchstwertige G-Bits + 5 höchstertige B-Bits

http://en.wikipedia.org/wiki/High_color

Gruß
Heavy

Hossa :smile:

Im 16-Bit-Farbraum sind 5 Bits für Rot, 6 Bits für Grün und 5 Bits für Blau vorgesehen. Da unser Auge auf grün besonders empfinglich reagiert, gibt es dafür doppelt so viel Farbtöne wir für Rot oder Blau.

Die Umrechnungsformel von 16,7 Mio. Farben auf 65536 Farben lautet also:

Dezimalfarbwert = 64*32*(Rotwert/8) + 32*(Grünwert/4) + (Blauwert/8)

Bei der Berechnung kann es jedoch zu ungewünschten Nebeneffekten kommen, wenn der Compiler optimiert. Es muss sicher gestellt werden, dass die überzähligen Bits wirklich ausgeblendet werden. Daher besser diese Formel verwenden:

Dezimalfarbwert = 256*(Rotwert & 248) + 8*(Grünwert & 252) + (Blauwert/8)

Viele Grüße

Hasenfuß

Hallo Hasenfuß,

vielen Dank, das war mal ein wirklich hilfreicher Beitrag, der auch funktioniert.
Nochmals vielen Dank.

Gruß
Ralph

Hallo,

Im 16-Bit-Farbraum sind 5 Bits für Rot, 6 Bits für Grün und 5
Bits für Blau vorgesehen. Da unser Auge auf grün besonders
empfinglich reagiert, gibt es dafür doppelt so viel Farbtöne
wir für Rot oder Blau.

Die Umrechnungsformel von 16,7 Mio. Farben auf 65536 Farben
lautet also:

Dezimalfarbwert = 64*32*(Rotwert/8) + 32*(Grünwert/4) +
(Blauwert/8)

Bei der Berechnung kann es jedoch zu ungewünschten
Nebeneffekten kommen, wenn der Compiler optimiert. Es muss
sicher gestellt werden, dass die überzähligen Bits wirklich
ausgeblendet werden. Daher besser diese Formel verwenden:

Dezimalfarbwert = 256*(Rotwert & 248) + 8*(Grünwert & 252) +
(Blauwert/8)

Kann ich das in die FAQs aufnehmen? Anscheinend ist das „seltenes“ Wissen :wink:

Cheers, Felix

Hossa Felix :smile:

Gerne kannst du das in die FAQs aufnehmen. Ich freue mich, wenn ich was dazu beitragen kann…

Viele Grüße

Hasenfuß