Ergebnis 1 bis 1 von 1

Thema: char* Speicherbereiche kopieren/ verschieben, manuell BMPs einladen [c++]

  1. #1

    char* Speicherbereiche kopieren/ verschieben, manuell BMPs einladen [c++] (Erledigt)

    Hallöchen,

    ich hab mal wieder eine kleine Frage. Ich versuche derzeit Bitmap-Dateien manuell, also byte für byte (header, infoheader + Bitmuster) einzuladen, dabei lade ich zuerst den Header, dann den Infoheader und dann die Byte für die Grafik ein. Die Header-Infos werden in Structuren abgelegt (des Typs BITMAPFILEHEADER und BITMAPINFOHEADER (WinAPI)) und das Bit-Muster wird in einen Buffer des Typs BYTE abgelegt. (BYTE ist afaik vergleichbar mit char, dem Namen nach 1 byte belegend und ein Datentyp der WinAPI).

    Ich habe mir eine Funktion geschrieben welche also diese Daten der Bitmap-Datei einläd. Jetzt möchte ich allerdings dass diese 3 Elemente welche wirr im Speicher liegen (2 Structure-Variablen und 1 char* Buffer), sortiert hintereinander sich befinden. Also so wie in einer BMP-Datei, Header, Infoheader und dann Bitmuster. Da ist die Frage, wie kopiert man Speicherbereiche von A nach B? Ich habe also vor, einen großen Speicherbuffer anzulegen des Typen BYTE* (oder char*) und dort nacheinander die 3 Teile des Bitmaps reinzukopieren.
    Alternativ könnte man auch erneut die komplette BMP-Datei neu einlesen, ganz und direkt zusammenhängend in einen Speicherbereich schreiben. Die Frage ist was mehr Rechenleistung beansprucht, im Speicher verschieben/ kopieren oder neu Einlesen.
    Oder sollte man vielleicht erst die ganze BMP-Datei einlesen und dann zerteilen in Header, Infoheader und Bitmuster? Wie würde man denn dann die einzelnen Bereiche aus dem char* Buffer in andere Buffer bekommen? Beispielsweise danach die ersten 50 Byte des char* Buffers XYZ in den char* Buffer ABC kopieren oder diesen mit den ersten 50 Byte neu erstellen.

    Ach ja, die Funktionsweise dieser Vorgänge habe ich aus folgendem Tutorial: http://www.runicsoft.com/bmp.php#chapter3

    Ich hoffe es findet sich jemand der mir mit dieser Thematik weiterhelfen kann.

    mfg.

    Sunny


    EDIT: Das Problem hat sich geklärt. Ich habe den Befehl memcpy() der String.h Library gefunden. Damit lässt sich mein kleines Problem lösen und ich kann jetzt beliebige Stellen eines Speicherbuffers in andere Speicherstellen schreiben. Ich verbleibe jetzt so, dass ich zuerst die gesammte BMP-Datei einlade und dann bei Bedarf die benötigten Infos des Headers auswerte.

    Geändert von Ynnus (05.01.2005 um 04:48 Uhr) Grund: Thema erledigt

Berechtigungen

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