我需要做的是压缩文件的64KB块,因为它们是从外部服务进来的,然后实时地将这一块压缩数据流式传输到浏览器.Xceed Real-Time非常棒,您可以设置文件的标头,然后将多个64KB块拼凑成客户端上的整个压缩文件.这很好用,您可以通过将其放在循环中轻松处理多个文件.
我的问题是:是否有一个免费的替代压缩实用程序,可以匹配Xceed的复杂性?我需要能够压缩文件并将文件的一部分流式传输到浏览器的东西.几乎所有我见过的免费替代方案都需要在压缩发生之前访问整个文件.Xceed很棒,但价格昂贵.只是想知道是否有一个可以实现这一目标的免费替代品.谢谢!
您正在寻找的是流压缩方法.好消息是你有很多选择.还请注意你必须考虑内存,因为一些解决方案(基于字典)可能需要大量内存,所以测试和调整.
为了保持我的答案简短,我建议尝试一下LZ4.
LZ4 - http://code.google.com/p/lz4/
LZ4是一种非常快速的无损压缩算法,每个内核的压缩速度为300 MB/s,可通过多核CPU进行扩展.它还具有极快的解码器,每个核心的速度为GB/s,通常达到多核系统的RAM速度限制.
基准测试:
Name Ratio C.speed D.speed MB/s MB/s LZ4 (r97) 2.084 410 1810 LZO 2.06 2.106 409 600 QuickLZ 1.5.1b6 2.237 373 420 Snappy 1.1.0 2.091 323 1070 LZF 2.077 270 570 zlib 1.2.8 -1 2.730 65 280 LZ4 HC (r97) 2.720 25 2040 zlib 1.2.8 -6 3.099 21 300
有很多可用的实现,请检查:http://code.google.com/p/lz4/
C# - https://github.com/stangelandcl/LZ4Sharp
LZO - http://lzo-net.sourceforge.net/
LZO.Net将Markus"FXJ"Oberhumer强大的LZO压缩库(V1.08)的强大功能带到.Net.它使用一个小的C#类包装对本机DLL的访问,保持ANSI-C库的原始速度.
Snappy - https://code.google.com/p/snappy/
Snappy是一个压缩/解压缩库.它的目标不是最大压缩,也不与任何其他压缩库兼容; 相反,它的目标是非常高的速度和合理的压缩.
有两种C#原生实现:
SnappySharp - https://github.com/Kintaro/SnappySharp
Snappy.Sharp - https://github.com/jeffesp/Snappy.Sharp
QuickLZ - http://www.quicklz.com/
QuickLZ是世界上速度最快的压缩库,每个核心达到308 Mbyte/s.它可以在商业许可下使用,如果已经获得或在GPL 1,2或3下使用,其中任何公开发布的内容必须是开源的.
本机实现 - QuickLZ C#
So far, only a subset of the library has been ported, namely the setting: QLZ_COMPRESSION_LEVEL = 1 or 3 QLZ_STREAMING_BUFFER = 0 QLZ_MEMORY_SAFE = 0