The stream seems to be closed by the Extract method. You may however create a second MemoryStream from the buffer of the first one:
var zipFile = ZipFile.Read(@"D:\myZipArcive.zip");
var zipEntry = zipFile["myfile.jpg"];
var zipStream = new MemoryStream();
zipEntry.Extract(zipStream);
var bitmap = new BitmapImage();
using (var sourceStream = new MemoryStream(zipStream.ToArray()))
{
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.StreamSource = sourceStream;
bitmap.EndInit();
}
myImage.Source = bitmap;
Update: Because you know the uncompressed size of the image buffer in advance, you might slightly improve performance by manually providing the buffer that the two MemoryStreams operate on:
var buffer = new byte[zipEntry.UncompressedSize];
var zipStream = new MemoryStream(buffer); // here
zipEntry.Extract(zipStream);
...
using (var sourceStream = new MemoryStream(buffer)) // and here
...