编辑内存中的 ZipArchive 条目(图像)

Editing ZipArchiveEntries (images) in memory

我不确定下面的代码示例有什么问题。

我没有收到任何错误,应用压缩后图像看起来像这样:

    Using _stm = _ZipArchiveEntry.Open
        Dim _ims = New MemoryStream
        Image.FromStream(_stm, True, True).Save(_ims, _codec, params)
        _stm.Seek(0, SeekOrigin.Begin)
        _stm.SetLength(_ims.Length)
        _ims.CopyTo(_stm)
    End Using

注意:如果我将图像写入磁盘,它仍然可以工作。不过,我想避免删除和重新插入 zip 存档条目。

Using _stm = _ZipArchiveEntry.Open
    Image.FromStream(_stm, True, True).Save("C:\test.jpeg", _codec, params)
End Using

我忘记将“_ims”流位置重置回 0。可悲的是,我假设 .CopyTo() 会为我做这件事。所以这是我实际检查的最后一件事......

这有效:

    Using _stm = p_ZipArchiveEntry.Open
        Using _ims As New MemoryStream
            Image.FromStream(_stm, True, True).Save(_ims, _codec, params)
            _stm.SetLength(_ims.Length)
            _stm.Seek(0, SeekOrigin.Begin)
            _ims.Seek(0, SeekOrigin.Begin)
            _ims.CopyTo(_stm)
        End Using
    End Using