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üllenint nSize = nWidth * nHeight * nBits pImgData = new unsigned char[nSize]; // daten in array laden
- in die datei speichern
- und dann wieder von vornedu 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 grafikich 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.aspich 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