Bilddateien (png, bmp?) in Binärdatei zusammenfassen
-
Hallo!
Es geht darum, dass ich in einem Spiel (2D) Animationen benutzen möchte. Jetzt möchte ich aber, dass nicht jeder einfach die Bilder so anschauen kann, sondern sie sollen in Paketen vorliegen (Sieht auch strukturierter aus, als wenn in einem Ordner 59858 Bilder liegen
).Beispiel:
soldier_anim_1.bmp
soldier_anim_2.bmp
soldier_anim_3.bmp
soldier_anim_4.bmpDas sind die Bilddateien für einen Soldaten, wenn er nichts zu tun hat.
Diese möchte ich dann z.B. in einer Datei "sanim.dat" zusammenfassen, welche ich dann im Spiel wieder auslese möchte.Was mir schon klar ist, dass das mit den Datei-Strömen von C++ geht. Aber ich weiß nicht, wie man so etwas grundsätzlich aufbaut. Sowas wurde doch sicher schon öfter gemacht, ich will das Rad nicht neu erfinden, gibt es da speziell für C++ ein Tutorial :)?
Viele Grüße
-
Du nimmst dir einen ofstream für die Ausgabe (einmal öffnen und dann behalten) und einen ifstream für die Eingabe (wird nacheinander mit jedem nötigen Bild geöffnet und wieder geschlossen), danach kannst du die Daten rumkopieren:
vector<string> infiles; string outfile; //beides füllen ifstream fin; ofstream fout(outfile.c_str()); for(int i=0;i<infiles.size();++i) { fin.open(infiles[i].c_str()); copystream(fout,fin);//<- das überlasse ich dir zur Übung ;) fin.close(); }(zum Zerlegen dieses Multi-Bitmap müsstest du dir jeweils den Bitmap-Header ansehen, um die Größe des aktuellen Bildes zu bestimmen, und dann per seekg() entsprechend weiterspringen zum nächsten Bild)