ich würde gerne auf dem schnellsten weg 136 jpeg (sind ca 26 Mb) in den Speicher laden. am besten beim Starten des Programms. Im moment mach ich folgendes:
Musst du denn alle gleichzeitig laden?
Das geht auch ganz schön in den Speicher.
Die Antwort hängt sehr davon ab, wie/wann du die Bilder anzeigst.
Je nachdem könntest du die benötigten in einem Thread vor-laden.
z.B. à la Slideshow einfach immer das Nächste.
Viel schneller wird es wohl nicht gehen, außer du nimmst ein anders Format kannst die Bilder ja unkomprimiert nehmen sind dann wahrscheinlich so an die 200 mb ist auch fraglich ob es so viel schneller geht die von der platte zu lesen als die jpgs zu dekomprimieren. und wunder dich nicht wenn dein Programm auf Rechnern mit weniger als 312 mb ram nicht läuft...
Das Programm soll von CD laufen, nicht von der Platte. Ich bin der Meinung, dass wenn ich jedes bild einzeln lade es evtl in der Summe noch länger dauert, da jedesmal das CD laufwerk wieder anstarten muß. Es sind halt von jedem Screen die hintergrund bilder, man drückt auf weiter, dann kommt sdas nächste bild, man kann auch zurück gehen, es perden popups angezeigt mit bis zu 9 Bildern ....
Ich bin der Meinung, daß das öffnen und schließen der Dateien so lange dauert. Kannn man die bilder nicht in eine Datei speichern und nur diese laden?
pLaz hat geschrieben:
Ich bin der Meinung, daß das öffnen und schließen der Dateien so lange dauert. Kannn man die bilder nicht in eine Datei speichern und nur diese laden?
Glaub ich nicht. Die Bilder müssen ja dekodiert werden. Das dauert schon seine Zeit.
Kannst ja mal kucken, ob's von HD schneller lädt.
Momentan werden die Bilder von der Platte geladen, dauert halt 15sec. Von der CD dauert es genau so lange (+3sec). Werden die bilder nicht erst beim anzeigen decodiert? Der speicherbedarf steigt ja nicht in die höhe nach dem laden... Wenn man ein bild bespielsweise in Photoshop öffnet, welches 100MB groß ist, dauert es "nur" 3 sec.
Ich bin mir da nicht so sicher, weil beim kopieren von dateien es auch länger dauert, wenn man 100 X 1Mb große files Kopiert oder 1 X ein 100 mb file.
pLaz hat geschrieben:Momentan werden die Bilder von der Platte geladen, dauert halt 15sec. Von der CD dauert es genau so lange (+3sec). Werden die bilder nicht erst beim anzeigen decodiert?
Da bin ich mir nicht sicher. Dann müsste die Dekodierarbeit ja bei jedem "Anzeigen" gemacht werden.
Das kannste ja mal testen. Ersetze in deinem Code einfach mal TJPEGImage mit TMemoryStream. Dann wird sicher nichts dekodiert.
Wenn das genau gleich lang dauert, hast du recht.
Leider kann man das so nicht machen, da man teilweise sehr schnell die einzelnen Seiten durchklicken kann. Das würde die gesammte bilderstrecke Ruckelig und Unprofessionell aussehen lassen. Aber evtl kann man bei jedem Popup, bzw bei jeder anfangenden Bilder-Strecke einfach vorher die Bilder laden. Ich sehe das Problem bei der Bereitstellung der Daten, da die Bilder von Cd geladen werden.
Also: Anstoßen der cd-rom, dann daten auf cd-rom suchen, laden ...
Irgendwie erzählst du Quatsch. Wenn du für 136 Bilder zum laden 15 Sekunden brauchst sind das pro Bild ca 100ms so schnell klickt kein mensch. Die Verzögerung ist nichtmal spürbar. Wenn du angst hast mit der CD dann kopierst du halt die Bilderstrecke in einen Temporären Ordner auf der Platte 26 mb sollten auch recht flott kopiert sein solangs am stück geschieht...
Die Bilder liegen alle in einem Verzeichniss oder ?
Wie währe es wenn du sie in Gruppen zusammen fassen würde und immer nur eine kleine anzahl laden würdes ?
Z.b. könnten die Bilder dann einer TreeView geladen werden und beim öffnen eines zweigen wird nach geladen.