Bilder in Datei schreiben und wieder auslesen
Übersicht

![]() |
RatchetBetreff: Bilder in Datei schreiben und wieder auslesen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich stelle mir aus mehreren Dateien eine große zusammen. Unter anderem sind Bilddateien enthalten. Jetzt möchte ich die Bilder direkt aus der großen Datei in ein TImage laden ohne sie temporär zwischenspeichern zu müssen.
So stelle ich die große Datei zusammen BlitzMax: [AUSKLAPPEN] s = WriteFile("test.map") Ich habe die länge der Dateien und die Datei selber. Klar könnte ich die Daten so in einen RamStram laden, aber dann? Ich müsste ja irgendwie mit LoadImage den Stream anzapfen. Hat da jemand einen Tipp? |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
- Zuletzt bearbeitet von Ratchet am Mi, Okt 14, 2009 15:35, insgesamt 2-mal bearbeitet
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest es in eine TBank zwischenspeichern und die Bank direkt LoadImage übergeben.- | ||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst ganz einfach das Image in einen Stream speichern als auch laden.
Code: [AUSKLAPPEN] 'laden von aktueller Streamposition:
Local stream:TStream = ReadFile("bla.map") Local image:TImage = LoadImage(stream) 'speichern von image:timage Local stream:TStream = WriteFile("Blub.map") SavePixmapPNG(image.pixmaps[0] , stream) |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
@D2006: Die Bank Variante werde ich mal versuchen.
@BladeRunner: Diese Variante verstehe ich nicht ganz. Wenn so ab der aktuellen Stream Position geladen wird, würde das ja bedeutet, dass der gesamte Rest der Datei ausgelesen würde. Aber es können ja noch andere Bilder/Daten in der Datei folgen. Ich müsste also schon irgendwie eine Länge angeben wieviel Bytes ich lesen möchte um wirklich nur das aktuelle Bild zu bekommen. |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Natürlich wird der Stream von der aktuellen Stelle für die Länge der Bilddatei eingelesen.
Dementsprechend ist ein solches Vorgehen vor allem interessant wenn Du einmal zu Start des Programms alle Bilder einliesst, in ein Array o.ä. So hangelst Du Dich in der Map von Bild zu Bild ohne weitere Angaben zu Speichern. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach so, nun versteh ich. Wird sozusagen automatisch erkannt wenn man es mit SavePixmapPNG in den Stream schreibt.
Hab es nun über die Bank gelöst, funktioniert wunderbar. Danke Leute. Auslesen: BlitzMax: [AUSKLAPPEN] bank = New TBank |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
Xar |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dazu habe ich auch eine Frage: Wird das jetzt so gelöst, weil die Datei "under anderem" Bilder enthält, bzw. weil es keine reine Bilddatei ist?
Ich lade mir Bilddateien immer direkt über LoadImage oder direkt in ein Pixmap und habe sie so umgehend verfügbar. Notfalls lese ich das Pixmap in ein Array aus, wenn ich mit den Bildpunkten Sachen anstellen will. Ist das nicht so sinnvoll? |
||
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deine Methode ist die ganz normale und richtige würde ich sagen, dass worum es hier ging ist wohl eher eine Art Schutz vor Benutzung seiner Bilder, Sounds usw.
Indem er seine Daten alle in eine Datei schreibt, weiß er der Benutzer nicht wo was in der Datei liegt und kann keinen Unsinn damit anstellen ![]() Machen ja auch die großen Firmen so, mir fällt da immer z.B. Call of Duty und dessen .pak dateien ein. MfG DaysShadow |
||
Blessed is the mind too small for doubt |
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es handelt sich um eine Leveldatei, die den Aufbau des Levels beschreibt. Die meisten Infos sind Bytes oder Ints.
Der Endbenutzer soll nachher selber Level erstelle und dabei bestimmte Bilder austauschen können (Themes). Und da ich es einfach unpraktisch finde dann immer Mappdatei, Bilddatei1, Bilddatei2 zu haben speicher ich nun einfach die Bilder mit in die Mapdatei. Ist praktisch und ich muss mir keine Sorgen darum machen dass eine Datei mal nicht vorhanden sein könnte. Mit Dateien schützen hat das nichts zu tun ![]() |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group