C#似乎无法正确添加图像到ziparchive

我正在尝试将一堆文件添加到c#中的zip文件中,但它似乎无法正常工作。

using (var memoryStream = new MemoryStream()) { using (var zip = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { for (int i = 0; i < kaart_data.GetLength(0); i++) { Image img = array[i]; var file = zip.CreateEntry(i + ".bmp"); using (var stream = new MemoryStream()) { img.Save(stream, ImageFormat.Bmp); using (var entryStream = file.Open()) { stream.CopyTo(entryStream); } } } } //saves the archive to disk using (var fileStream = new FileStream(@"C:\Temp\test.zip", FileMode.Create)) { memoryStream.Seek(0, SeekOrigin.Begin); memoryStream.CopyTo(fileStream); } } 

问题是它确实将zip文件创建并保存到具有预期文件大小的磁盘中。

但是,当我尝试在Windows照片查看器中打开它们时,它们似乎已损坏。

任何帮助表示赞赏。

几乎需要3个小时来弄清问题是什么。 如果你看一下原始图像的大小并提取一个,那就有一点不同。

 using (var memoryStream = new MemoryStream()) { using (var zip = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { for (var i = 0; i < images.Length; i++) { var img = images[i]; var file = zip.CreateEntry(i + ".bmp"); using (var stream = new MemoryStream()) { img.Save(stream, ImageFormat.Bmp); using (var entryStream = file.Open()) { var bytes = stream.ToArray(); -- to keep it as image better to have it as bytes entryStream.Write(bytes, 0, bytes.Length); } } } } using (var fileStream = new FileStream(@"test.zip", FileMode.Create)) { memoryStream.Seek(0, SeekOrigin.Begin); memoryStream.CopyTo(fileStream); } } 

我尝试过它就像一个魅力!