![]() |
Bitmap: falsche Farben
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich hab mit meinem ![]() Wenn ich diese Guild-Wars-Bitmaps mit einem anderen Grafikprogramm öffne werden sie auch richtig angezeigt, daher denke ich das der Fehler in meinem Programm liegt. Die Bitmaps werden in normale Images und in Image32 geladen, daher kanns imho nicht an der Image-Komponente liegen. Im Anhang mal 2 Bilder - richtig und falsch. Ich hoffe ihr könnt mir helfen. |
Re: Bitmap: falsche Farben
sieht aus als wären sie in einem Druckformat (nicht rgb).
|
Re: Bitmap: falsche Farben
Hi,
die Farben sind vertauscht (ok, dass siehst du ja). Du musst hier von deiner RGB Belegung in eine BRG Belegung umwandeln, dann sieht wieder alles richtig aus. Warum der das falsch macht weiß ich nicht. |
Re: Bitmap: falsche Farben
Zitat:
[Edit]Ich bin bis Mittwoch weg und weis nicht ob ich da Internet hab, nicht wundern wenn ich nicht gleich antworte[/Edit] |
Re: Bitmap: falsche Farben
*push*
hat keiner ne lösung? |
Re: Bitmap: falsche Farben
Kannst du das Bild von dem der Screenshot stammt mal hier anhängen? Dann würd ich mal in den Jpg-Header schauen.
|
Re: Bitmap: falsche Farben
das Original ist ein Bitmap, ich werds zuhause mal packen und hochladen
|
Re: Bitmap: falsche Farben
Liste der Anhänge anzeigen (Anzahl: 1)
So, hier ist das Originalbild, ist leider trotz Packen etwas groß.
|
Re: Bitmap: falsche Farben
Ich hab mir mal dein Bitmap angeschaut und die Header sind eigentlich korrekt und auch die Farbwerte sind richtig abgespeichert in RGB, aber Delphi beachtet offenbar nicht die bfOffBits im TBitmapFileHeader. Denn zwischen dem TBitmapInfoHeader und den Farbdaten liegen bei deinem Bitmap noch 2 leere Bytes. Diese 2 Byte liest Delphi als Farbdaten ein, wodurch der fehler entsteht.
Du hast jetzt mehrere möglichkeiten: Du schreibst dir eine eigene Prozedur zum einlesen des Bitmaps oder du änderst die Bitmaps indem du die 2 leeren Bytes entfernst bevor sie in Delphi eingelesen werden. Die 2te möglichkeit (das entfernen der leeren Bytes) habe ich mal übernommen, hier der Code:
Delphi-Quellcode:
mfg
procedure BitmapVerify(FileName: TFileName);
var fs: TFileStream; fh: TBitmapFileHeader; ih: TBitmapInfoHeader; Offset: DWORD; Buffer: Pointer; begin fs:=TFileStream.Create(FileName, fmOpenReadWrite); try fs.Position:=0; fs.ReadBuffer(fh, SizeOf(fh)); fs.ReadBuffer(ih, SizeOf(ih)); Offset:=fh.bfOffBits-(SizeOf(TBitmapFileHeader)+SizeOf(TBitmapInfoHeader)); if Offset>0 then begin GetMem(Buffer, ih.biSizeImage); try fs.Position:=fh.bfOffBits; fs.ReadBuffer(Buffer^, ih.biSizeImage); fh.bfSize:=fh.bfSize-Offset; fh.bfOffBits:=fh.bfOffBits-Offset; fs.Position:=0; fs.WriteBuffer(fh, SizeOf(fh)); fs.Position:=fh.bfOffBits; fs.WriteBuffer(Buffer^, ih.biSizeImage); fs.Size:=fh.bfSize; finally FreeMem(Buffer, ih.biSizeImage); end; end; finally fs.Free; end; end; |
Re: Bitmap: falsche Farben
Wow, vielen Dank, funktioniert super *freu* :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 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