Hey Leute, vielleicht könnt ihr mir bei was helfen.
Das hier:
Hab ich mit dem RessourceHacker aus ner Maker-exe kopiert. Das scheint mir ein Bild direkt codiert zu sein und ich frage mich nun, wie konvertiere ich das am besten in was anzeigbares, bzw. wie konvertiere ich ein anderes Bild in genau dieses Format?
Ich hab' nie mit Delphi gearbeitet, aber dieser Link sieht so aus, als würde er genau das beschreiben, was du suchst: http://www.daniweb.com/forums/thread204064.html#
Wenn ich's auf die Schnelle richtig verstanden hab', musst du also nur eine neue Applikation starten, eine TImage Komponente im form designer benutzen und über Doppelklick auf die Picture- Eigenschaft im Object Inspector, lässt sich dann ein neues Bild laden, dass dementsprechend kodiert wird .
Man könnte ja einen Konverter schreiben, hab dank dem Resultat von Whizard mal die Hex-Zahlen umgepflückt.
Vielleicht erkennt ja jemand das Format.
Ich denke es würde sich ändern, wenn mehr Farben vorhanden wären (BMP/ICO?)
Erkenntnis, Farben sind in der Form BGR also wie im Bitmap Format angegeben.
Das wird ein Delphi-spezifisches Format sein. Ich habe einfach mal den ganzen Kram in einen Hexeditor kopiert und siehe da, der die ersten acht Bytes erweisen sich als \7TBitmap. Da außer Delphi-Programmierern niemand den Zwang hat, alles mit T zu präfixen und kein geistig gesundes Bildformat acht Bytes auf den Header verschwenden würde, dürfte das sehr deutlich was internes sein.
Dafür spricht auch, daß file keine Ahnung hat, was das ist: $ file ~/temp/delphibild
/Users/jesus_666/temp/delphibild: data
Ich liebe es, wie die Entwickler dieser Sprache permanent das Rad neu erfinden...
Das Format ist wie folgt aufgebaut und gilt nur für Bilddaten abgelegt im BMP-Format:
Offset 0 [1 Byte]: Länge des folgenden Strings: 7
Offset 1 [7 Bytes]: String, der das Bildformat beschreibt: "TBitmap"
Offset 8 [4 Bytes]: Länge der Bilddaten im Little Endian-Format: 230
Ab Offset 12: Bilddaten im BGR-Format.
Wenn man also die ersten 12 Bytes entfernt, hat man die Daten einer validen BMP-Datei.
Anhang 5142 - Damit kannst du zwischen hexadezimalem Text und Binärformat umherkonvertieren.
Ziehe eine BMP-Datei auf bin2hex.exe und du erhältst den hexadezimalen Text, den du in Picture.Data verwenden kannst.
Kopiere den gesamten hexadezimalen Text aus Picture.Data in eine Textdatei und ziehe diese auf hex2bin.exe und du erhältst eine BMP-Datei.
Das wird ein Delphi-spezifisches Format sein. Ich habe einfach mal den ganzen Kram in einen Hexeditor kopiert und siehe da, der die ersten acht Bytes erweisen sich als \7TBitmap.
...
Nun vielleicht kennt ja einer die TImage-Komponente? Nun vielleicht weiß auch einer, dass sie eine Picture-Instanz enthält die die Bilddaten bereitstellt. Die von Delphi waren so schlau, das Ganze so zu basteln, das ein TImage nicht nur eine Bitmap sondern auch JPEGs, PNGs und in der neueren Version afaik sogar GIF und MNG darstellen kann. Oh wunder, alles sind extra Objekte abgeleitet von TPicture. Da man nun irgendwie ermitteln muss, ob es sich um ein TBitmap oder TJpeg handelt, oder vielleicht sogar, oh wie ich diese Freiheit liebe um ein eigenes Bildformat, bzw. eigenes Resourceformat, speichert man dessen Instanznamen und seine Daten einfach ab. Dann erzeugt man einfach die Instanz schiebt die Daten an entsprechnder Stelle im RAM und ehe man sich versieht kann TImage wunderbar zu greifen
Zitat
Da außer Delphi-Programmierern niemand den Zwang hat, alles mit T zu präfixen und kein geistig [...]
...
Zitat
Ich liebe es, wie die Entwickler dieser Sprache permanent das Rad neu erfinden...