Hallo Leute
Ich Quäle mich schon einige Zeit durch die Suche, finde aber keine richtige Lösung zu meinem Prob.
Für euch wird es bestimmt einfach,mir fehlt der richrige Lösungsansatz.
Ich habe ein *.bmp in das Image1 geladen und möchte die Bilddaten in Byte ausgeben
Beim bmp ist die Farbtiefe 1 Pixel, also ein reines S/W-Bild.
Ich versuche es mal hier zu Malen (* bedeutet Pixel gesetzt):
*-------
-*------
--*-----
---*----
----*---
-----*--
------*-
-------*
das Hex des Originals:
42 4D 60 00 00 00 00 00 00 00 3E 00 00 00 28 00
00 00 08 00 00 00 08 00 00 00 01 00 01 00 00 00
00 00 00 00 00 00 95 3A 00 00 95 3A 00 00 00 00
00 00 00 00 00 00 FF FF FF 00 00 00 00 00 01 00
00 00 01 00 00 00 04 00 00 00 08 00 00 00 10 00
00 00 20 00 00 00 40 00 00 00 80 00 00 00 00 00
Gespeicher mit Option: Zeilenfolge umkehren:
42 4D 60 00 00 00 00 00 00 00 3E 00 00 00 28 00
00 00 08 00 00 00 F8 FF FF FF 01 00 01 00 00 00
00 00 00 00 00 00 95 3A 00 00 95 3A 00 00 00 00
00 00 00 00 00 00 FF FF FF 00 00 00 00 00 80 00
00 00 40 00 00 00 20 00 00 00 10 00 00 00 08 00
00 00 04 00 00 00 02 00 00 00 01 00 00 00 00 00
Nun klebt da ja auch noch der Hedaer drann und die Farbinfo brauche ich auch nicht.
Mein gedanke war (oder ist) dieses Bild aus der Image1 zu speicher,
wobei das zu exportierende Textformat so aussehen muss:
.db 0x80
.db 0x40
.db.....
Ist das Bild nur 1 Zeile (besteht immer aus 8 Bit) und 24 pixel breit soll es so aussehen:
.db 0x80, 0x40, 0x20
Bei einem Bild mit der Auflösung von max. 320x240 sollen da 40 Byte in der Zeile und 240 untereinander sein, dass ist der größte zu erwatende Block, der kleinste ist 1 Byte.
Warum aus dem Image1? Ich habe da noch die möglichkeit des Invertierens eingebaut.
Mein Teilcode:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TForm1.Button3Click(Sender: TObject); var endung: String; path: string; name: String; alles : string; Text: TStringList; filename:string;
begin endung := ExtractFileExt(OpenDialog1.Filename); name := ExtractFileName(OpenDialog1.Filename); path := ExtractFilePath(OpenDialog1.Filename); alles:= path+name; if path = '' then begin MessageDlg('erstmal ne Datei laden!', mtInformation,[mbOk], 0); end else begin
end; SaveDialog1.Filter := 'db Dateien (*.db)|*.db'; SaveDialog1.DefaultExt := 'db'; SaveDialog1.FileName:= (name)+'.db'; if SaveDialog1.Execute then begin Memo1.Lines.SaveToFile(SaveDialog1.FileName); end;
end; |
Ich hoffe auf viele Antworten und bedanke mich jetzt schon mal dafür.
mfg Jornbyte (der sehr lange nix mit Delphi gemacht hat)