![]() |
(monochromes) BMP --> RAW
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
wie kann ich möglichst unkompliziert und einfach ein monochromes Bitmap (2 Farben: schwarz & weiß) in eine headerlose RAW Datei speichern? Die zu ladene BMP wird in jedem Fall 700*700 groß sein. Etwas rumexperimentiert habe ich auch schon, aber irgendwie ist das Ergebnis fehlerhaft. Die zu erwartene Dateigröße liegt bei 490.000 Bytes, was auch bei der erstellten Datei der Fall ist. Also muss irgendwas an meiner Konvertierfunktion falsch sein. Zur meinem Gedankengang: - monochomes Bitmap laden - jede Zeile mit Scanline() scannen und je nach Pixelfarbe den Wert "0" für schwarz und "255" für weiß erst in ein Array, dann in die Datei schreiben. Ursprungsbild: ![]() Resultat: ![]() Quelltext:
Delphi-Quellcode:
Vielleicht weiß ja einer von Euch, was da schief läuft.
...
var Form1: TForm1; farben: array[0..699] of byte; bmp: TBitmap; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin bmp:=TBitmap.Create; bmp:=image1.Picture.Bitmap; //das bild ist schon im TImage geladen end; procedure TForm1.Button1Click(Sender: TObject); var p: pByteArray; hoehe, breite: Integer; FileStream: TFileStream; begin FileStream:=TFileStream.Create('test.raw', fmCreate or fmOpenWrite); for hoehe:=0 to 699 do begin p:=bmp.ScanLine[hoehe]; for breite:=0 to 699 do begin if p[breite]=0 then farben[breite]:=0 else if p[breite]=255 then farben[breite]:=255; end; FileStream.Write(farben, 700); end; FileStream.Free; end; end. LG, Whoopee Edit: Ich habe ein Beispielprojekt mal angehängt. |
Re: (monochromes) BMP --> RAW
Bei zwei Farben ist ein Pixel nicht 1 Byte, sondern ein Bit breit. Versuche mal ein
Delphi-Quellcode:
bmp.PixelFormat := pf8Bit;
|
Re: (monochromes) BMP --> RAW
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 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