压缩/解压(ICSharpCode.SharpZipLib 类库)
我在 AgileIM 的开发中解决视频/音频会话功能时,发现传输的音/视频数据量太大,通过一些格式转换(如BMP->JPG、或 帧间预测编码)可以适当减少带宽的需求,但是仍然不能满足需求,于是我想到了数据压缩,经过我测试、普通的音/视频数据经压缩后可以只有原来的一半大小,基本可以满足需要了。压缩/解压功能我借助了ICSharpCode.SharpZipLib 类库,为了更方便易用,我封装了ZipHelper类,实现如下:
{
public static byte [] Zip( byte [] data)
{
MemoryStream mstream = new MemoryStream();
BZip2OutputStream zipOutStream = new BZip2OutputStream(mstream);
zipOutStream.Write(data, 0 , data.Length);
zipOutStream.Finalize();
zipOutStream.Close();
byte [] result = mstream.ToArray();
mstream.Close();
return result;
}
public static byte [] Unzip( byte [] data)
{
MemoryStream mstream = new MemoryStream(data);
BZip2InputStream zipInputStream = new BZip2InputStream(mstream);
byte [] byteUncompressed = new byte [zipInputStream.Length];
zipInputStream.Read(byteUncompressed, 0 , ( int )byteUncompressed.Length);
zipInputStream.Close();
mstream.Close();
return byteUncompressed;
}
}
ICSharpCode.SharpZipLib 类库可以从 这里下载。
压缩/解压(ICSharpCode.SharpZipLib 类库)相关推荐
- C# .NET 使用DotNetZip开源类库 处理 压缩/解压 Zip 处理乱码情况
dotNetZip on CodePlex: http://dotnetzip.codeplex.com/ 压缩/解压/重命名: //1.压缩//指定编码,防止中文乱码情况using (ZipFile ...
- python压缩文件tar_python 实现tar文件压缩解压的实例详解
python 实现tar文件压缩解压的实例详解 python 实现tar文件压缩解压的实例详解 压缩文件: import tarfile import os def tar(fname): t = t ...
- 使用C#压缩解压文件
为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...
- 【分享】AspxZip v2.0 在线压缩解压ZIP文档
下载地址: http://download.csdn.net/detail/rrrfff/5756977 当前版本:2.0.20140609 AspxZip v2.0 特点: 1.能够在支持 ASP. ...
- WebAPI性能优化之压缩解压
有时候为了提升WebAPI的性能,减少响应时间,我们会使用压缩和解压,而现在大多数客户端浏览器都提供了内置的解压支持.在WebAPI请求的资源越大时,使用压缩对性能提升的效果越明显,而当请求的资源很小 ...
- Asp.net 2.0 C#实现压缩/解压功能
Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载) (一). 实现功能 对文件及目录的压缩及解压功能 (二). 运行图片示例 (三).代码 1. 压缩类 1/**//// <s ...
- 测试掌握的Linux解压,轻松掌握Linux压缩/解压文件的方法
对于在Linux下解压大型的*.zip文件,相信大家一般都会通过使用winrar直接在smb中来进行解压的操作,虽然说最终可能能够解压但有时候会存在解压时间长或者网络原因出错等故障的情况出现.那么有没 ...
- tar压缩解压命令详解
tar命令详解 -c:建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其 ...
- 一章: CentOS6.5 网络配置、修改主机名、添加硬盘、压缩——解压方法、VNC—server配置
1,配IP ,修改网络配置文件 配置网卡 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:50:56:83: ...
最新文章
- Github 标星 11.5K!这可能是最好的 Java 博客系统
- Idea debugger 无法启动-unable to open debugger port , java.net.SocketException socket closed
- 服务器安装系统时无法创建新的分区,重装系统出现“我们无法创建新的分区,也找不到现有的分区”...
- 【Prince2科普】Prince2七大流程概论
- Android 插件技术实战总结
- git branch 为什么会进入编辑状态_Git很难,搞砸很容易,好在有神奇命令让时光倒流...
- 模板的日常~。~。。。(持续更新中...)
- Repeater绑定ArrayList数据源
- (六):关于全局config配置
- Docker下使用gdb
- 万能点位图软件_万能点位图软件_BoardViewer
- 【数字逻辑设计】电路原理图
- AC/DC、DC/DC转换器基础指南(二)
- 网页 php,怎么用php写一个网页
- 海德汉 LSV2 协议采集
- 利用π/4=1-1/3+1/5-1/7+1/9+……,编程计算π近似值,直到最后一项的绝对值小于10的负5次方为止,输出π的值并统计累加的项数。
- SysAdmim 必备:系统性能大牛 Brendan Gregg 分享的 Linux 性能工具
- 卓训教育:打败挫败感,让孩子对学习更自信
- 使用PdfBox实现pdf转图片,解决中文方块乱码等问题
- [文献解读#3] 一种反向生态学方法:用基因流定义微生物种群
热门文章
- 关于测试工程师的职业发展思考
- 投入Anaconda的怀抱,Anaconda及Jupyter Notebook简介
- 万象:SpaceX 火箭回收的失败案例汇总
- Wikiwand——更酷的wiki打开方式
- Java的GUI编程---Swing介绍
- Please specify a program using absolute path or make sure the program is available in your PATH syst
- 我的Java开发学习之旅------Java资源的国际化详解
- 幕布,为知笔记和 Effie 哪个更适合单口或脱口秀作者?
- Android CMWAP和CMNET 切换APN
- 将Openfire中的MUC改造成类似QQ群一样的永久群