Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Bilder aus Zip-File laden (https://www.delphipraxis.net/163733-bilder-aus-zip-file-laden.html)

TitanNano 13. Okt 2011 16:38

Bilder aus Zip-File laden
 
hallo,

ich lade mit meinem Programm sehr viele Bilder nach, da ich sie aber nicht alle im Programm Ordner haben möchte, würde ich sie gerne in verschiede Zip-Files sortieren. Deshalb würe ich gerne Die Bilder aus dem zip-file's auslesen und in ImageList's speichern. ACHTUNG ich will jedoch vermeiden die bilder zuenpacken, also auf die Platte zu peichern.

Was für Möglichkeiten gibt es hier zu??

mfg. TitanNano

cookie22 13. Okt 2011 17:38

AW: Bilder aus Zip-File laden
 
Irgendwohin entpacken mußt du sie schon, ob nun auf die Platte oder in den Speicher, sonst kannst du ja nicht drauf zugreifen. ;)

TitanNano 13. Okt 2011 17:52

AW: Bilder aus Zip-File laden
 
Okay.. :) dann möchte ich die Bilder nur in den speicher laden. jedoch hab ich sowas noch nie gemacht und hab deshalb keinen Plan wie das geht. :)

Nersgatt 13. Okt 2011 18:03

AW: Bilder aus Zip-File laden
 
Ich glaube, Du solltest Dich lieber mal mit dem Stichwort "Resourcen" befassen, als mit den Zipfiles. Das ist für das, was Du willst, die richtige Technik.

TitanNano 13. Okt 2011 19:11

AW: Bilder aus Zip-File laden
 
ich kann irgendwie keine Resource Dateien anlegen :(....

cookie22 13. Okt 2011 20:12

AW: Bilder aus Zip-File laden
 
Schau mal hier:

http://www.wilsonc.demon.co.uk/d10resourceeditor.htm

CCRDude 14. Okt 2011 07:30

AW: Bilder aus Zip-File laden
 
Delphi 2010 habe ich übersprungen (kann daher leider nicht sagon, ob es dort genauso einfach geht); Delphi XE zumindest macht es wohl sehr einfach: im Menü "Project" gibt es hen Punkt "Resources and Images", mit dem Bilder als Resourcen hinzugefügt werden können. Danach verwendest Du TResourceStream, um sie in einen Stream zu laden, den Du in ein entsprechendes TBitmap/TJPEGImage/TPNGImage laden kannst, welches Du dann der TImageList hinzufügst.

Da es dann doch allerdings einfacher wäre, sie zur Designtime in die Imagelist zu packen, könnte ich mir vorstellen, daß Du Dir bei der Frage nach Zip-Dateien schon etwas gedacht hast.

Für den Fall: in DelphiZip etwa gibt es die Methode ExtractFileToStream, mit dem Du Bilddateien aus einem Zip-Archiv direkt in ein TMemoryStream laden kannst - von dort aus siehe oben, äquivalent zu TResourceStream.

nahpets 14. Okt 2011 15:25

AW: Bilder aus Zip-File laden
 
Hallo,
Zitat:

Zitat von TitanNano (Beitrag 1130309)
hallo,

ich lade mit meinem Programm sehr viele Bilder nach, da ich sie aber nicht alle im Programm Ordner haben möchte, würde ich sie gerne in verschiede Zip-Files sortieren. Deshalb würe ich gerne Die Bilder aus dem zip-file's auslesen und in ImageList's speichern. ACHTUNG ich will jedoch vermeiden die bilder zuenpacken, also auf die Platte zu peichern.

Was für Möglichkeiten gibt es hier zu??

mfg. TitanNano

schau mal bitte hier: http://www.delphizip.org/

Da gibt es eine Komponente zum Verarbeiten von ZIP-Dateien. Der müsste auch in Streams entpacken können und diese kannst Du wiederum als Bild laden.

Probiert habe ich das noch nicht, aber vielleicht hilft Dir das ja weiter.

Darlo 14. Okt 2011 15:46

AW: Bilder aus Zip-File laden
 
Ich packe die Bilder in eine .res und dann in eine DLL (damit ich mit einem Onlineupdate Bereichsweise die Bilder austauschen kann).

Als erstes eine *.rc Datei mit folgendem Inhalt erstellen:

Code:
bild1 png "bild1.png"
bild2 png "bild2.png"
bild3 png "bild3.png"
bild4 png "bild4.png"
und mit brcc32.exe daraus eine .res erstellen.

Dann eine DLL-Datei erstellen

Code:
library bilder;

{$R bilder.RES}
begin
end.
Im Programm selber lade ich die Bilder so:

Code:
    h := LoadLibrary(PCHAR(ExtractFileDir(Application.ExeName)+'/dll/bilder.dll'));
    for i := 1 to 4 do
      begin
        r := TResourceStream.Create(h, 'bild'+inttostr(i), 'png');
        j := TPNGImage.Create;
          try
            j.LoadFromStream(r);
            TImage(form2.FindComponent('img'+imgStart[i])).Picture.Bitmap.Assign(j);
          finally
            j.Free;
            r.Free;
          end;
      end;
Gruß Darlo


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz