![]() |
Farbwerte von 24 Bit RGB zu 16 Bit RGB (565) konventieren
Moin erstmal,
ich hänge hier ein wenig fest, da ich die entsprechende Formel nicht herausbekomme. Ich habe ein TImage und lese dort die Pixelfarben stück für stück aus. nun soll mein Progrämmchen diese Farben als RGB 565 Ausgeben. Wäre Nett wenn mir jemand helfen könnte. Kurzfassung: aus TColor bzw. den einzelnen RGB (8Bit) Werten einen RGB 565 (16 Bit) Wert zaubern. |
AW: Farbwerte von 24 Bit RGB zu 16 Bit RGB (565) konventieren
Wo ist denn das Problem genau?
|
AW: Farbwerte von 24 Bit RGB zu 16 Bit RGB (565) konventieren
ein Zusammenhang mit einem Dreisatz erschließt sich mir hier nicht... ich empfehle ganz einfaches binäres ausmaskieren und Bit-Schieben:
rgb24 : DWORD; rgb16 : WORD; //xxxxxxxx RRRRRrrr GGGGGGgg BBBBBbbb -> RRRRRGGG GGGBBBBB //eventuell ist Rot&Bbau vertauscht, das ist aber wurscht weil symmetrisch rgb16:=WORD(DWORD( ((rgb24 and $f80000) shr 8) or ((rgb24 and $fc00) shr 5) or ((rgb24 and $f8) shr 3) )) |
AW: Farbwerte von 24 Bit RGB zu 16 Bit RGB (565) konventieren
Zur Info
![]() und eine Antwort dazu auf ![]() Wenn es genauer sein soll, dann eben den Dreisatz bemühen, sonst einfaches Bitschieben |
AW: Farbwerte von 24 Bit RGB zu 16 Bit RGB (565) konventieren
Das binäre Schieben ist am Ende auch nur der Dreisatz, wenn man es mathematisch betrachtet.
Einziger Unterschied:
Die Einzelwerte dann wieder zu dem Gesammtwert zusammensetzen geht dann andersrum und man kann auch gleich zerlegen und zusammensetzen auch schön in einer "Formel" zusammenfassen. Ach ja, bei den binären Wegen wird immer abgerundet, außer man rechnet (addiert) vorher noch bissl was drauf. (gibt ja keinen Nachkommaanteil) |
AW: Farbwerte von 24 Bit RGB zu 16 Bit RGB (565) konventieren
Eine "API" für RGB16...(eventuell ist rot und blau vertauscht)
r := BYTE(WORD((rgb16 shr 11) and $1f))); //GetR16value g := BYTE(WORD((rgb16 shr 5) and $3f))); //GetG16value b := BYTE(WORD(rgb16 and $1f)); //GetB16value |
AW: Farbwerte von 24 Bit RGB zu 16 Bit RGB (565) konventieren
In Delphi (Windows) war TColor nur in einer Reihenfolge.
Für iOS/OSX oder so, wo das andersrum ist, gibt es in TColorRec, bzw. TAlphaColorRec (hieß doch so?) entsprechende Helper-Methoden, welche sich ans entsprechende Endianess anpassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz