【问题标题】:Editing ZipArchiveEntries (images) in memory在内存中编辑 ZipArchive 条目(图像)
【发布时间】:2016-10-10 15:18:51
【问题描述】:

我不确定我在下面的代码示例中做错了什么。

我没有收到任何错误,并且应用压缩后的图像如下所示:

    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”保存到磁盘并将文件与您在第二个示例中直接保存的文件进行比较?
  • 我想通了。我忘记将 _ims 上的位置重置为 0。

标签: vb.net gdi+ zipfile


【解决方案1】:

我忘记将“_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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 2013-02-28
    • 2023-03-30
    相关资源
    最近更新 更多