Mehrere Bilder in eine Datei ?!?



  • Hallo,

    ich möchte verschiedene Bilder und Grafiken welche ich in meinem Programm
    verwende NICHT für den Anwender sichtbar machen und suche nun eine Möglichkeit
    mehrere Grafiken in eine grosse Datei zu schreiben und natürlich während der
    Laufzeit wieder zu laden.

    Wer hat eine Idee oder gibt es dazu ein Tutorial ?



  • Ist zwar jetzt nicht wirklich C++, aber eine Möglichkeit wäre ein animiertes Gif zu nehmen. Ich weiss ja nicht genau, was du machen willst, aber du kannst das z. B. so einstellen, dass es direkt beim 1. Bild stoppt. Die Bilder danach werden dann nicht angezeigt. Der Sinn ist mir allerdings nicht wirklich klar. Naja, ist ja auch schon spät... 🕶



  • Hi,

    also mal zum Sinn des Ganzen.

    Das Programm soll eine Art Datenbank von Bildern anzeigen, Grafiken und
    Übersichten. Ich möchte aber nicht dass der Anwender Zugriff auf die eigentlichen Bilddateien hat, denn die Inhalte der Bilder haben jede
    Menge Arbeit gemacht und sollen nicht einfach zu eigenen Zwecken verwendet
    werden.

    Wenn ich das Programm dem Anwender auf einem Medium aushändige müssen
    die Bilder die das Prog enthält also so gespeichert sein dass, er sie
    nicht einfach im Paint aufmachen kann.



  • sowat habe ich schon mal gemacht, allerdings für ein spiel 😃

    so ähnlich hat meine daten ausgessen

    typedef struct _DATATEXTURE
    {
       unsigned long nWidth;
       unsigned long nHeight;
       unsigned int nBits;
    } DataTex;
    unsigned char *pImgData;
    

    zum speichern:
    - grafik1 laden
    - struktur füllen
    - pixeldaten array füllen

    int nSize = nWidth * nHeight * nBits
      pImgData = new unsigned char[nSize];
      // daten in array laden
    

    - in die datei speichern
    - und dann wieder von vorne

    du kannst evtl. noch nen header mit infos (anzahl der grafiken, usw...)mitspeichern

    zum lesen:
    (- evtl. header lesen)
    - datenstruct lesen
    - speicher akkolieren
    - pixeldaten laden
    - nächste grafik

    ich hoffe mein ansatz hat dir a bissi weitergeholfen.



  • Hallo,

    vielen Dank erstmal. Der Ansatz ist genau das was ich brauche. Wie bekomme
    ich jetzt aber die Daten aus dem Array in ein Bitmap. Oder soll ich die
    Daten (z.B. Farbe der einzelnen Pixel) direkt in das Image schreiben.

    Wenn das Programm für verschiedene Auflösungen funktionieren soll dann bräuchte ich sicherlich ein bmp damit ich die stretch funktion benutzen
    kann, oder ? 😕

    Wie du merkst steck ich noch am anfang von grafikprogrammierung 😞



  • primaerleiter schrieb:

    Wie bekomme
    ich jetzt aber die Daten aus dem Array in ein Bitmap.

    du musst die bitmapstrukturen BITMAPINFOHEADER und BITMAPFILEHEADER füllen.
    siehe msdn ab hier http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_1rw2.asp

    ich würde dir von bitmaps abraten. nimm lieber tga's (persöhnliche meinung)

    primaerleiter schrieb:

    Wenn das Programm für verschiedene Auflösungen funktionieren soll dann bräuchte ich sicherlich ein bmp damit ich die stretch funktion benutzen
    kann, oder ? 😕

    zum anzeigen meinst du 😕 versteh ich nicht ganz 🙂



  • Mit TGA's hab ich noch nicht gearbeitet. Wo finde ich etwas darüber ? 😕

    Mit der flexiblen grösse mein ich, dass wenn das fenster in dem die grafik
    angezeigt wird mal 800x600 und beim nächsten Anwender 1024x768 wäre dann
    brauche ich doch mehr informationen für mehr pixel. speichere ich das bild
    also gross ab muss ich es womöglih stauchen, speichere ich es klein muss ich
    interpolieren. des mein ich...



  • primaerleiter schrieb:

    Mit TGA's hab ich noch nicht gearbeitet. Wo finde ich etwas darüber ? 😕

    auf http://www.wotsit.org/ findest alle fileformate
    loader findest du hier http://nehe.gamedev.net/lesson.asp?index=07 oder hier http://www.gametutorials.com/Tutorials/opengl/OpenGL_Pg2.htm, opengl befehle brauchst du ja nicht geht nur um den loader der tga's (pixelarray usw)

    primaerleiter schrieb:

    Mit der flexiblen grösse mein ich, dass wenn das fenster in dem die grafik
    angezeigt wird mal 800x600 und beim nächsten Anwender 1024x768 wäre dann
    brauche ich doch mehr informationen für mehr pixel. speichere ich das bild
    also gross ab muss ich es womöglih stauchen, speichere ich es klein muss ich
    interpolieren. des mein ich...

    für einen weg musst du dich entscheiden, da nicht jeder die gleiche auflösung hat. ich würde 800*600 nehmen.

    800*600*32bit = ca. 2MB
    1024*768*32bit = ca. 3MB



  • Vielen Dank erstmal für das Echtzeitpostig 😉

    Hab jetzt erstmal bissl was zu lesen 😃


Anmelden zum Antworten