c# - 如何在没有流或系统 io 的情况下压缩字节数组

标签 c# .net compression

我正在尝试将图像编码为字节数组并将其发送到服务器。 编码和发送部分工作正常,但我的问题是字节数​​组太大,发送时间太长,所以我认为压缩它会使它运行得更快。但实际问题是我不能使用 system.io 或流。我的目标是 .net 2.0。 谢谢。

最佳答案

using System.IO;
using System.IO.Compression;

代码:

public static byte[] Compress(byte[] data)
{
    MemoryStream output = new MemoryStream();
    using (DeflateStream dstream = new DeflateStream(output, CompressionLevel.Optimal))
    {
        dstream.Write(data, 0, data.Length);
    }
    return output.ToArray();
}

public static byte[] Decompress(byte[] data)
{
    MemoryStream input = new MemoryStream(data);
    MemoryStream output = new MemoryStream();
    using (DeflateStream dstream = new DeflateStream(input, CompressionMode.Decompress))
    {
        dstream.CopyTo(output);
    }
    return output.ToArray();
}

已更新

使用 7zip 库:
http://www.splinter.com.au/compressing-using-the-7zip-lzma-algorithm-in/

// Convert the text into bytes
byte[] DataBytes = ASCIIEncoding.ASCII.GetBytes(OriginalText);

// Compress it
byte[] Compressed = SevenZip.Compression.LZMA.SevenZipHelper.Compress(DataBytes);

// Decompress it
byte[] Decompressed = SevenZip.Compression.LZMA.SevenZipHelper.Decompress(Compressed);

关于c# - 如何在没有流或系统 io 的情况下压缩字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39191950/

相关文章:

c# - 是否可以使用库中的类型创建 DataContract?

compression - SharpLibZip : Add file without path

linux - 如何将 "tail -f"压缩为压缩(gzipped)文件?

c# - 映射接口(interface)或抽象类组件

c# - Entity Framework 数据读取性能

c# - 从 C# 项目创建 UML 图

ios - 像霍夫曼编码这样的算法是否实际用于生产?

c# - 接口(interface)的 C# "explicit implementation"是否存在于 Java 中?

.net - Visual Studio 2008 中缺少工作流项目模板

c# - 使用 WS-Security web 服务的 WCF 客户端