C#局域网桌面共享软件制作(三)
到周末了,继续做这个桌面共享软件,下面是前两篇的链接,
通过对图片进行压缩以后,每张图片大小38K左右(win7/1024*768),每秒网络流量175kb/s+。占用的网络还是很大,那我们可以再对其进行压缩。
压缩用的是.Net提供的GZipStream,需引入using System.IO.Compression; GZipStream的压缩比例大概是20%;
压缩:
public static byte[] Compress(byte[] bytes)
{
using (MemoryStream ms = new MemoryStream())
{
GZipStream Compress = new GZipStream(ms, CompressionMode.Compress);
Compress.Write(bytes, , bytes.Length);
Compress.Close();
return ms.ToArray();
}
}
解压:
public byte[] Decompress(Byte[] bytes,int len)//因为本例需求,我加了一个参数Len表示实际长度
{
try
{
using (MemoryStream tempMs = new MemoryStream())
{
using (MemoryStream ms = new MemoryStream(bytes,,len))
{
GZipStream Decompress = new GZipStream(ms, CompressionMode.Decompress);
Decompress.CopyTo(tempMs);
Decompress.Close();
return tempMs.ToArray();
}
}
}
catch
{
return null;
}
}
需要说明的是解压后返回的流一定要判断是否为空,如果为空就丢弃
byte[] arr = Decompress(b,len);
if (arr == null)
continue;
解释一下
C#局域网桌面共享软件制作(二)中CompressImage进行了第一次压缩,然后再用GZipStream进行第二次压缩
压缩后流量进一步减少,但是其显示的效果不是特别好(还是能看清楚),因为CompressImage方法是有损压缩,会失真。
如果想要高清画面,就不使用CompressImage,只用GZipStream进行一次压缩吧
下面是没有经过压缩的图片的大小样例

文章写的有点乱,请多包涵,如果以后还有其它方法,会继续添加
源代码链接http://download.csdn.net/detail/oyipiantian/7252741
C#局域网桌面共享软件制作(三)的更多相关文章
- C#局域网桌面共享软件制作(二)
链接C#局域网桌面共享软件制作(一) 如果你运行这个软件查看流量监控就会发现1~2M/s左右的上传下载,并且有时会报错“参数无效”,如果你将屏幕截图保存到本地的话每张图片大概4M(bmp).120KB ...
- C#局域网桌面共享软件制作(一)
很久没有写文章了,今天分享的内容是局域网桌面共享软件,相信很多人都做过,也可能遇到一些问题,这里我将一一测试. 涉及到的内容有:局域网文件传输.桌面截屏.图片压缩等.为了更直白的演示程序的功能所以没有 ...
- ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(三)
ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(三) 本教程适用于想要在远程服务器上配置docker图形界面用于深度学习的用户. (三)配置远程桌面连接访问dock ...
- wpf 客户端【JDAgent桌面助手】开发详解(二)桌面宠物制作详解
目录区域: wpf 客户端[JDAgent桌面助手]业余开发的终于完工了..晒晒截 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]开发详解(一)主窗口 ...
- C# 使用UDP组播实现局域网桌面共享
最近需要在产品中加入桌面共享的功能,暂时不用实现远程控制:参考了园子里的一些文章,加入了一些自己的修改. 需求:将一台机器的桌面通过网络显示到多个客户端的屏幕上,显示内容可能为PPT,Word文档之类 ...
- (转)C# 使用UDP组播实现局域网桌面共享
转:http://www.cnblogs.com/mobwiz/p/3715743.html 最近需要在产品中加入桌面共享的功能,暂时不用实现远程控制:参考了园子里的一些文章,加入了一些自己的修改. ...
- Xen虚拟机磁盘镜像模板制作(三)—CentOS 7
这里整理下制作Xen CentOS 7磁盘镜像模版的流程: 1.创建一个将要用来安装CentOS 7系统的LV,命令如下: [root@localhost ~]# lvcreate -L 5G -n ...
- Visual Studio 项目模板制作(三)
前面,我们已经制作好了模板,然后放到相应的Template目录就可以在Visual Studio中使用 本篇,我们采用安装VSIX扩展的方式来安装模板,这种方式需要安装Visual Studio SD ...
- UE4蓝图AI角色制作(三)
接上一节 6. 寻路网格体代理 通过允许配置多个"代理",虚幻引擎使得用户能够轻松为大小各异的AI创建寻路网格体.首先,选中世界大纲视图中的"RecastNavMesh& ...
随机推荐
- 要件审判九步法及其基本价值 z
要件审判九步法及其基本价值 发布时间:2014-12-24 14:29:05 作者介绍 邹碧华,男,1967年出生于江西奉新,毕业于北京大学法学院,获法学博士学位.上海市高级人民法院副院长.2006年 ...
- UILabel使用技巧
UILabel的各种属性与方法的使用(转) #import "LabelTestViewController.h" @implementation LabelTestViewCon ...
- MyEclipse运行时自动保存
今天第一次用MyEclipse,我发现我的代码明明修改了,但运行结果发现总是修改前的代码结果.后来发现,是代码修改后必须保存,再点运行.这个功能明显不合适,所以需要更改MyEclipse的配置.红框是 ...
- sikuli+java实例
新建java工程,导入sikuli-script.jar包 public class TestSikuli { public static void openPage() throws FindF ...
- POJ 1611
菜鸟第一次做这种.想了好一会儿.== 首先还是初始化记忆数组,使得每一个元素的初始根节点是自己. 然后是对输入的数据进行并集.我们拿出每组元素的第一个作为根节点. 每次检测是否已经存在根节点.如果存在 ...
- 在Yarn上运行spark-shell和spark-sql命令行
转载自:http://lxw1234.com/archives/2015/08/448.htm 如果你已经有一个正常运行的Hadoop Yarn环境,那么只需要下载相应版本的Spark,解压之后做为S ...
- 监控RAC中的临时表空间
it is from metalink:Note:465840.1 1>Monitor the temp space allocation to make sure each instance ...
- T4 assembly
In a T4 template the executing assembly is not yours but one from the T4 engine. To access types fro ...
- The Ninth Hunan Collegiate Programming Contest (2013) Problem C
Problem C Character Recognition? Write a program that recognizes characters. Don't worry, because yo ...
- Flex 仿Winxp左侧菜单
呆毛放出,源码暂时不能公布,一直比较喜欢winxp的左侧菜单样式,以前也用xslt实现过,但总是达不到完美,没想到FLex轻松做到了这一点,几乎和winxp一模一样.