![]() |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
Ist zwar ein anderes Forum :!: , aber
![]() |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
Ja du hast recht, das war au käse von mir...Dachte ich habe eine Regel gesehen, das war leider nur bei dem Graustufen bild der fall.
Das Gif habe nicht ich erstellt, die waren als Vorschau da um zu sehen was in den KBM Dateien für bilder enthalten sind. Das Format mit den 12 Bit Pixel ist für die Radios mit einem 4096-Farben Display. Diese habe ich bereits ausgelesen und umgerechnet, sind haargenau die selben Farben wie auf der Vorschau. Daher denke ich, muss ich nur rausfinden wie sie die Pixel im 8bit modus errechnen. Das 8bit Format ist übrigens auch für den 4096-Farben Display. |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
Zitat:
Und um ein paar mal ein Bild anzusehen. Eine mathe Formel ist anschaulicher als Bit Schiebe Operationen! Und sowieso: Bevor man irgendetwas optimiert muss es erst mal funktionieren. Wird oft genug anderst gemacht-> das Ergebnis ist dann zwar assig schnell, funktioniert aber nicht! DerDan |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
@Grishnak
Das war die 12Bit Variante ;-) |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
Also auf den Wert 176 kommt man nur, wenn man den 8-Bit- in einen 12-Bit-Wert umwandelt und dann einfach x16 nimmt, also:
Delphi-Quellcode:
Du solltest dann aber vielleicht mit einer CLUT (Color Lookup Table) arbeiten und diese bei der Initialisierung füllen.
procedure TForm1.Button4Click(Sender: TObject);
var ab: byte; r, g, b: byte; begin ab := $FF; r := 16 * ((( ab and 7) * 15) div 7); g := 16 * ((((ab shr 3) and 7) * 15) div 7); b := 16 * ((((ab shr 6) and 3) * 15) div 3); showmessage(inttostr(r)); showmessage(inttostr(g)); showmessage(inttostr(b)); end;
Delphi-Quellcode:
var
clut: array [byte] of TColor; procedure InitClut; var ab: byte; r, g, b: byte; begin for ab := $00 to $FF do begin r := 16 * ((( ab and 7) * 15) div 7); g := 16 * ((((ab shr 3) and 7) * 15) div 7); b := 16 * ((((ab shr 6) and 3) * 15) div 3); clut[ab] := RGB(r, g, b); end; end; |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
@DerDan:
na funktionieren sollte es ja. Und im Endefekt würde von den hier angebotenen Möglichkeiten wohl die mit dem Array, wo alle 256 Farben schon fertig umcodiert sind, wohl am schnellsten sein, da dort ja schließliech nur 1 bis 2 MOV-Operatioen nötig wären |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
... und wenn er's richtig schnell haben will und die Breite der Grafik glatt durch 4 teilbar ist, dann nimmt er einen TMemoryStream und schreibt
1. TBitmapFileHeader 2. TBitmapInfoHeader 3. die CLUT als Palette 4. die Bits seiner Bitmap hinein, setzt Stream.Position wieder auf 0 und kann damit ein TBitmap.LoadFromStream machen :mrgreen: |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Flocke
Bei deiner Berechnung werden folgende Bilder generiert: Siehe Anhang :-( |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
Sind Fehlfarben :(
Variier mal die Bitbreiten:
Delphi-Quellcode:
r := 16 * ((( ab and 3) * 15) div 3);
g := 16 * ((((ab shr 2) and 7) * 15) div 7); b := 16 * ((((ab shr 5) and 7) * 15) div 7);
Delphi-Quellcode:
r := 16 * ((( ab and 7) * 15) div 7);
g := 16 * ((((ab shr 3) and 3) * 15) div 3); b := 16 * ((((ab shr 5) and 7) * 15) div 7); |
Re: 8 bit Color Byte zu 24 bit Farbe umrechnen
Zitat:
eine Routine die die Tabelle erstellt oder musst sie von hand ausrechnen. kann man alles machen, sobald es funktioniert. Und wehe man hat ein paar wenige Fehler in der Tabelle ... mfg Der Dan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 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-2025 by Thomas Breitkreuz