到周末了,繼續做這個桌面共享軟件,下面是前兩篇的鏈接,
通過對圖片進行壓縮以后,每張圖片大小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, 0, 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,0,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
