Bild Lesen



  • Hallo alle zusammen,

    ich stehe vor einem kleinen Problem. Ich würde gerne eine Datei auslesen, von der ich weiß, dass es Bildinformationen beinhaltet (Ultima Underworld .gr Datei) 😉

    Jetzt weiß ich bloß nicht genau wie ich z.B. die einzelnen Bytes auslesen soll.

    Hier mal eine Beschreibung der Datei:

    Graphics can be stored with 8-bit or 4-bit
    indices.

    0000 Int8 Graphic file format:
    01 .gr
    02 .tr
    03 .cr [uw2] ---> Ultima Underworld 2
    04 .sr [uw2]
    05 .ar [uw2]
    0001 Int16 number of bitmaps
    0003 Int32 offset to bitmap #0
    0007 Int32 offset to bitmap #1
    ...

    Each bitmap has its own header:

    0000 Int8 bitmap type:
    04: 8-bit uncompressed
    08: 4-bit run-length
    0A: 4-bit uncompressed
    0001 Int8 width
    0002 Int8 height

    For the 4-bit formats, there follows another Int8 that selects the
    auxiliary palette to use (see 2.1).

    000n Int16 size of data for the bitmap.
    in 4-bit formats, this is the number of 4-bit nibbles, not
    bytes.

    Ich habe mal versucht mich anhand von "Bitmap auslese codes" schlau zu machen, aber da ist immer Krams dabei, der über das Ziel hinaus geht. Ich möchte sozusagen, die Datei einlesen und diese dann identisch abspeichern...später halt als Bitmap speichern und umgekehrt -.-

    Wäre nett wenn Ihr ein Paar Startpunkte für mich hättet 🙂

    Viele Grüße
    Zynetichs

    P.S. Es handelt sich dabei um die Avatar Gesichter des Spielers. Wenn man die Datei mit einem Editor öffnet, kann man klar und deutlich die einzelnen Vierecke sehen. Was für mich ein Zeichen ist, dass es nicht alt zu schwer sein müsste 🙂



  • Da oben siehste ja schon den aufbau eines bitmap files dann teilst den header von den pixel daten. Guck dir mal DIBSections an.



  • Hallo,

    danke für den Tipp mit den DIBSections 🙂 Werde mir das mal angucken.

    Was mir aber noch fehlt, ist die Antwort, wie man einzelne Bytes auslesen kann.
    mit fstream im bynary mode denke ich mal. Ist es dann so, dass wenn ich 1 Byte auslese ich 1/14tel des Bitmap File Headers habe?

    Gibt es zufällig eine Tabelle oder eine Seite wo auch die einzelnen Pixelinformationen erklärt werden, also welche Farbe diese beinhalten, oder handelt es sich dabei um die selben, wie auch für HTML?

    Achja wenn ich ein Bitmap z.B. einlesen (und zwar genau 54 byte), dann kommen doch danach jeweils die einzelnen Pixelinformationen, die ich rein theoretisch aneinander klatschen könnte und es würde ein Bild ergeben oder? (Höhe und Breite mit einbezogen)

    Viele Gürße und danke nochmal 🙂



  • ja fstream binary sollte funktionieren.
    Zu der zweiten frage normal ja, weil dort ja dazwischen keine anderen daten stehen.

    mfg tobZel


Log in to reply