C#局域網桌面共享軟件制作(三)


到周末了,繼續做這個桌面共享軟件,下面是前兩篇的鏈接,

鏈接 C#局域網桌面共享軟件制作(一) 

鏈接 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, 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM