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); } }
我尝试过它就像一个魅力!
- 如何将xaml中的值绑定到validation规则?
- SmtpException:仅为具有ASCII本地部分的电子邮件地址配置客户端或服务器
- 是否有可能让Entity Framework识别已创建但尚未保存在数据库中的对象?
- 强制EventProcessorHost将失败的Azure Event Hub eventData重新传递给IEventProcessor.ProcessEvents方法
- 如何在.Net中将HEX值转换为Datetime
- .Net内存在创建大量线程时泄漏
- 将double转换为十进制时,为什么会出现InvalidCastException
- 如何在C#/ .NET中创建内存泄漏
- 以编程方式截取部分隐藏窗口的屏幕截图