Ergebnis 1 bis 11 von 11

Thema: Delphi Bild im Code

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Delphi Bild im Code

    Hey Leute, vielleicht könnt ihr mir bei was helfen.

    Das hier:
    Code:
      object Image1: TImage
        Left = 8
        Top = 352
        Width = 14
        Height = 14
        AutoSize = True
        Picture.Data = {
          07544269746D6170E6000000424DE60000000000000076000000280000000E00
          00000E0000000100040000000000700000000000000000000000100000001000
          000000000000000080000080000000808000800000008000800080800000C0C0
          C000808080002850FF0000D7000000D7FF00FF500000FF00FF00FFFF0000FFFF
          FF0044444444444444004000000000000400487777777777040048FFFFFFFFF7
          040048FCCCFBBBF7040048FCCCFBBBF7040048FCCCFBBBF7040048FFFFFFFFF7
          040048FAAAF999F7040048FAAAF999F7040048FAAAF999F7040048FFFFFFFFF7
          040048888888888804004444444444444400}
        Transparent = True
        Visible = False
      end
    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?

    mfg Corti

  2. #2
    Eigentlich sollte der Resourcehacker iirc sowas anzeigen koennen.
    Ansonsten gibt es iirc bei Delphi einen Image-Editor unter den Tools.

    Ist allerdings schon Jahre her und ich hab gerade kein Delphi (da kein Windows) da.

  3. #3
    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 .

  4. #4
    Hm~ okey. Frage ist jetzt wie soll ich das machen ohne Delphi zu besitzen?
    *grübel*

  5. #5
    ich glaube kaum, dass du so ein Bild gesucht hast.
    Habs mal unter Delphi eingefügt. Resultat findest du in diesem Link

  6. #6
    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?)
    Code:
    07544269
    746D6170
    E6000000
    424DE600
    00000000
    00007600
    000028
    0000000E // = 14, Breite oder Höhe
    0000000E // = 14, Breite oder Höhe
    0000000100040000
    00000070
    00000000
    00000000
    00000010
    00000010
    000000
    000000 // Schwarz (0)
    00
    000080
    00
    008000
    00
    008080
    00
    800000 // Dunkelblau (4)
    00
    800080
    00
    808000
    00
    C0C0C0 // Hellgrau (7)
    00
    808080 // Dunkelgrau (8)
    00
    2850FF // Rot (9)
    00
    00D700 // Grün (A)
    00
    00D7FF // Gelb (B)
    00
    FF5000 // Hellblau (C)
    00
    FF00FF
    00
    FFFF00
    00
    FFFFFF // Weiss (F)
    00
    //Bilddaten:
    // 0 ist schwarz daher wohl auf dem Kopf (erkennt man an der Form, dass es das schwarze sein muss)
    // 4 ist Dunkelblau
    // 7 ist hellgrau
    // 8 ist dunkelgrau
    // A ist grün
    // B ist gelb
    // F ist weiss
    44444444444444 00
    40000000000004 00
    48777777777704 00
    48FFFFFFFFF704 00
    48FCCCFBBBF704 00
    48FCCCFBBBF704 00
    48FCCCFBBBF704 00
    48FFFFFFFFF704 00
    48FAAAF999F704 00
    48FAAAF999F704 00
    48FAAAF999F704 00
    48FFFFFFFFF704 00
    48888888888804 00
    44444444444444 00
    Erkenntnis, Farben sind in der Form BGR also wie im Bitmap Format angegeben.

    Geändert von Drakes (15.10.2009 um 15:50 Uhr)

  7. #7
    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...

    Geändert von Jesus_666 (15.10.2009 um 16:03 Uhr)

  8. #8
    @Corti:

    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.

    Edit: Danke, Drakes. ^^

    Geändert von Kyuu (26.02.2010 um 14:08 Uhr)

  9. #9
    Ich hab das mal per Hex-Editor getestet und man musste 12 Bytes wegschneiden.

  10. #10
    Zitat Zitat
    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 Zitat
    Da außer Delphi-Programmierern niemand den Zwang hat, alles mit T zu präfixen und kein geistig [...]


    Zitat Zitat
    Ich liebe es, wie die Entwickler dieser Sprache permanent das Rad neu erfinden...
    You made my day!

  11. #11
    Erstmal danke an alle für die Hilfe =)

    Ich hab jetzt ein Tool gefunden, dass mir hilft diese Bilder direkt auszutauschen (Ressource Tuner), aber trotzdem wieder wass gelernt, fein.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •