zhuweisky

君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。

ESFramework,基于.NET的通信框架。DataRabbit,轻量的数据访问框架。Strive,游戏引擎。sky.zhuwei@163.com
posts - 196, comments - 1329, trackbacks - 101, articles - 1
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

压缩与解压缩 ZipHelper

Posted on 2006-03-06 09:40 zhuweisky 阅读(2407) 评论(11)  编辑 收藏 网摘 所属分类: C#专栏
    我在AgileIM的开发中解决视频/音频会话功能时,发现传输的音/视频数据量太大,通过一些格式转换(如BMP->JPG、或 帧间预测编码)可以适当减少带宽的需求,但是仍然不能满足需求,于是我想到了数据压缩,经过我测试、普通的音/视频数据经压缩后可以只有原来的一半大小,基本可以满足需要了。压缩/解压功能我借助了ICSharpCode.SharpZipLib 类库,为了更方便易用,我封装了ZipHelper类,实现如下:
     public static class 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 类库可以从这里下载。

Feedback

#1楼    回复  引用  查看    

2006-03-06 10:05 by 雁儿飞飞      
数据压缩是通信中常用的手段
但是最好还是加密
BCD

#2楼    回复  引用  查看    

2006-03-06 10:24 by Jiang Jin Nan      
不错! 收下。

#3楼    回复  引用    

2006-03-06 11:30 by chuanzai [未注册用户]
加密是不是会影响到效率?

#4楼    回复  引用  查看    

2006-03-06 12:48 by tansm      
.NET 2.0中包含了ZIP功能

#5楼    回复  引用  查看    

2006-03-06 12:49 by tansm      
在.NET 1.1中引用J#的库,也包含此功能

#6楼    回复  引用  查看    

2006-03-06 17:13 by 高海东      
学习

#7楼    回复  引用  查看    

2006-03-06 18:55 by 雁儿飞飞      
@chuanzai

加密是通信的一种手段,当然有时候没这个必要啊
不谈效率

#8楼    回复  引用  查看    

2006-03-06 18:58 by 淹不死的鱼asp.net开发专栏      
http://www.718.com.cn
轻松构建.net应用,
Asp.net空间只需155元/年。
磁盘空间: 50M
MS SQL数据库空间: 20M
支持: ASP.net、ASP
FTP管理
流量无限制
P4 2.0G以上CPU 2G内存
硬盘2*73G 操作系统: Windows2003
千兆光纤接入,百兆独享宽带
7×24小时全网监控系统,千兆防火墙系统、防攻击设备
网通/电信

查看更多虚拟主机请点击http://www.718.com.cn有更多款式配置适合你的需求。

#9楼    回复  引用  查看    

2006-03-06 21:50 by 一滴水      
学习 !!

#10楼    回复  引用  查看    

2006-03-07 17:50 by 天梦      
学习!!

#11楼    回复  引用    

2006-04-19 19:12 by zhj [未注册用户]
我这里出现这个问题,能帮我解释一下吗

F:\研一\project\compress\Class1.cs(20): 无法通过类型“BZip2OutputStream”的限定符访问保护成员“object.~Object()”;限定符必须是类型“ZipHelper”(或者从该类型派生)的




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

相关文章:

相关链接: