AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi 8 bit Color Byte zu 24 bit Farbe umrechnen
Thema durchsuchen
Ansicht
Themen-Optionen

8 bit Color Byte zu 24 bit Farbe umrechnen

Ein Thema von cyberblast · begonnen am 27. Sep 2005 · letzter Beitrag vom 27. Sep 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Grishnak
Grishnak

Registriert seit: 15. Sep 2005
Ort: Neu-Ulm
111 Beiträge
 
RAD-Studio 2009 Arc
 
#11

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 13:54
Ist zwar ein anderes Forum , aber hier findest du genau, was du suchst!
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
  Mit Zitat antworten Zitat
cyberblast

Registriert seit: 17. Jun 2005
19 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 13:59
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.
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#13

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 13:59
Zitat von himitsu:
@DerDan: "nichts Richtiges"

klar wird dat was ... aber der "rechenaufwand" ist meiner Meinung nach nicht gerade angemessen.

Solange die Kiste Rechnen muss!
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
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
cyberblast

Registriert seit: 17. Jun 2005
19 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 14:00
@Grishnak

Das war die 12Bit Variante
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 14:19
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:
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;
Du solltest dann aber vielleicht mit einer CLUT (Color Lookup Table) arbeiten und diese bei der Initialisierung füllen.

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;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#16

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 14:22
@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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 14:25
... 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
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
cyberblast

Registriert seit: 17. Jun 2005
19 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 14:37
Hi Flocke

Bei deiner Berechnung werden folgende Bilder generiert: Siehe Anhang
Miniaturansicht angehängter Grafiken
untitled_883.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#19

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 14:45
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);
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#20

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 14:45
Zitat von himitsu:
@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
Was sicher stimmt, aber um die Tablle zu erstellen brauchst dann entweder ein extra Program
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
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz