Wpf: indlæse jpg direkte fra zip uden at gemme filen først
Jeg bruger DotNetZip.Herunder 2 eksempler
I eksempel 1 indlæses billedfilen til en MemoryStream fra en zipfil.
For at teste om filen er loaded, gemmes denne MemoryStream som en fil.
I eksempel 2 indlæses billedfilen til en MemoryStream fra en almindelig fil.
Jeg har altså to Memorystream.
Den 2. kan efterfølgende indlæses i myImage, mens den anden ikke viser billedet.
Hvad er forskellen på de 2 MemoryStreams og hvorfor virker eksempel 1 ikke.
eksempel 1:
MemoryStream memoryStream1 = new MemoryStream();
ZipFile zip = ZipFile.Read(@"D:\myZipArcive.zip");
ZipEntry myEntry = zip["myfile.jpg"];
myEntry.Extract(memoryStream1);
memoryStream1.Close();
System.IO.File.WriteAllBytes(@"D:\saved.jpg", memoryStream1.ToArray());
//gemmer som fil for at teste
BitmapImage src = new BitmapImage();
src.BeginInit();
src.CacheOption = BitmapCacheOption.OnLoad;
src.StreamSource = memoryStream1;
src.EndInit();
myImage.Source = src as ImageSource; //billedet vises ikke
eksempel 2.
FileStream fileStream = File.OpenRead(@"D:\myFile.jpg");
MemoryStream memoryStream2 = new MemoryStream();
memoryStream2.SetLength(fileStream.Length);
fileStream.Read(memoryStream2.GetBuffer(), 0, (int)fileStream.Length);
BitmapImage src = new BitmapImage();
src.BeginInit();
src.CacheOption = BitmapCacheOption.OnLoad;
src.StreamSource = memoryStream2;
src.EndInit();
myImage.Source = src as ImageSource; //Billedet vises