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 3 von 3     123   
cyberblast

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

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 14:52
Gibt folgende Variantionen:

Verzwickt
Miniaturansicht angehängter Grafiken
untitled2_171.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
 
#22

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 14:58
Sieht so aus

Gehen wir wieder zurück zur ersten Variante - probiere mal, die R, G und B jeweils paarweise zu vertauschen.

[Nachtrag]

wobei ich glaube, dass es nicht daran liegt.

Ich denke mal, die nehmen eine spezielle Palette.
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
 
#23

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 15:05
Habe ich schon probiert, dabei werden die orangen vierecke blau respektive grün, die reihenfolge stimmt also...

Ich habe noch dieses probiert:

Delphi-Quellcode:

     r := ((AColor and $07) shl 1) * 16;
     g := ((AColor and $38) shr 2) * 16;
     b := ((AColor and $C0) shr 4) * 16;
     result := RGB(r, g, b);
Resultat siehe bild...
Miniaturansicht angehängter Grafiken
untitled3_507.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
 
#24

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 15:09
Schickst du mir mal eins von diesen KBM-Dingern (oder die fünf vom Beispiel)...
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
 
#25

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 15:19
Das erste Bild beginnt nach 16 Bytes, also beim 17.

Alle Bilder sind 16'384 bytes gross.

Bitte schalte den "Big Endian" modus ein im Hexeditor. Die Bytes sind vertauscht. Um die Word-Werte aus dem Header zu lesen habe ich die Swap funktion verwendet...
Angehängte Dateien
Dateityp: zip graphic_192.zip (17,4 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#26

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 15:41
Sind die nicht normalerweise indiziert? Also so daß es eine Farbtabelle gibt mit Indeces von 0-255 und dann eben die Farbwerte in der Farbtabelle stehen?
  Mit Zitat antworten Zitat
cyberblast

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

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 15:44
Bei älteren KBM dateien für ältere Radios ist dies so...

Hier sind beie Varianten erwähnt:
http://en.wikipedia.org/wiki/8-bit_color
  Mit Zitat antworten Zitat
cyberblast

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

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 16:06
Ich glaube es muss was in diese Richtung sein...sieht schon fast identisch aus wie das original:

Delphi-Quellcode:
     r := ((ab and $07) shl 1) shl 4;
     g := ((ab and $38) shr 2) shl 4;
     b := (((ab and $C0) or (ab and $1) shl 5));
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

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

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 16:07
Also wenn ich's hier ausprobiere, dann ist der Rotstich zwar nicht mehr so drastisch wie bei dir aber immer noch da.

Delphi-Quellcode:
procedure TForm1.LoadKBM(const Filename: string; Bitmap: TBitmap);
const
  kbmWidth = 256;
  kbmHeight = 5 * 64;
type
  TBitmapInfo8 = packed record
    bmiHeader: TBitmapInfoHeader;
    bmiColors: array [0 .. 255] of TRgbQuad;
  end;
var
  bfh: TBitmapFileHeader;
  bih: TBitmapInfo8;
  strm: TMemoryStream;
  fils: TFileStream;
  c, r, g, b: integer;
begin
  FillChar(bfh, SizeOf(bfh), 0);
  with bfh do
  begin
    bfType := $4D42;
    bfSize := SizeOf(bfh) + SizeOf(bih) + kbmWidth * kbmHeight;
    bfOffBits := SizeOf(bfh) + SizeOf(bih);
  end;

  FillChar(bih, SizeOf(bih), 0);
  with bih.bmiHeader do
  begin
    biSize := SizeOf(TBitmapInfoHeader);
    biWidth := kbmWidth;
    biHeight := -kbmHeight;
    biPlanes := 1;
    biBitCount := 8;
    biCompression := BI_RGB;
    biSizeImage := kbmWidth * kbmHeight;
    biClrUsed := 256;
  end;

  for c := 0 to 255 do
  begin
    b := 1 * ((( c and 7) * 255) div 7);
    g := 1 * ((((c shr 3) and 7) * 255) div 7);
    r := 1 * (((((c shr 5) and 6) or ((c and 1) and ((c shr 3) and 1))) * 255) div 7);
    with bih.bmiColors[c] do
    begin
      rgbBlue := b;
      rgbGreen := g;
      rgbRed := r;
    end;
  end;

  strm := TMemoryStream.Create;
  try
    strm.WriteBuffer(bfh, SizeOf(bfh));
    strm.WriteBuffer(bih, SizeOf(bih));

    fils := TFileStream.Create(Filename, fmOpenRead or fmShareDenyWrite);
    try
      fils.Position := 16;
      strm.CopyFrom(fils, kbmWidth * kbmHeight);
    finally
      fils.Free;
    end;

    strm.Position := 0;
    Bitmap.LoadFromStream(strm);
    strm.SaveToFile(ChangeFileExt(Filename, '.bmp'));
  finally
    strm.Free;
  end;
end;
Man muss irgendwie das fehlende Bit in ROT so anpassen, dass es zu den anderen Farben passt - intern werden die wahrscheinlich eine dafür angepasste Palette nehmen.

Du kannst in dem Ausdruck
((c and 1) and ((c shr 3) and 1)) ein wenig herumspielen, um das fehlende Rot-Bit aus den anderen beiden zu holen.
Varianten:
Delphi-Quellcode:
((c and 1))
(((c shr 3) and 1))
((c and 1) or ((c shr 3) and 1))
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
 
#30

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 17:37
Ok, besten Dank für deine hilfe, ich hoffe ich krieg das noch hin dieses jahr
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 12:02 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