【发布时间】:2015-06-13 04:34:25
【问题描述】:
所以我有一些代码可以捕获屏幕并将其保存到 jpeg 文件中。这很好用,但是我想将 jpeg 编码的捕获保存到新的 ZipArchive 而不先将位图写入文件系统。
这是我目前所拥有的:
FileInfo zipArchive = new FileInfo(fileToZip.FullName + ".zip");
using (ZipArchive zipFile = ZipFile.Open(zipArchive.FullName, ZipArchiveMode.Create)))
{
ZipArchiveEntry zae = zipFile.CreateEntry(fileToZip.FullName, CompressionLevel.Optimal);
using (Stream zipStream = zae.Open())
bmp.Save(zipStream, ImageFormat.Jpeg);
}
问题是在bmp.Save() 行上抛出了System.NotSupportedException
来自 ZipArchiveEntry 的此流不支持搜索。
我已经看到很多直接写入从 zae.Open() 返回的 Stream 的示例,所以我不确定为什么这不起作用,因为我认为所有 bmp.Save() 需要做的就是写入,而不是查找.我不知道这是否可行,但我不想将位图保存到MemoryStream 并将该流复制到从zae.Open() 返回的流,因为这感觉像是不必要的额外工作。我错过了什么明显的东西吗?
【问题讨论】:
标签: c# file bitmap ziparchive in-memory