none
System.IO.Compression 壓縮的疑問! RRS feed

  • 問題

  • Bitmap ScreenImage = Screen.CaptureScreen(); //這個是自已抓取螢幕畫面的方法
    MemoryStream ScreenStream = new MemoryStream();
    MmoryStream ms = new MemoryStream();
    ScreenImage.Save(ScreenStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    DeflateStream zip = new DeflateStream(ms, CompressionMode.Compress);
    Byte[] buffer = ScreenStream.ToArray();
    zip.Write(buffer, 0, buffer.Length);
    MessageBox.Show(buffer.Length.ToString() + ":" + ms.Length.ToString() + ":" + ScreenStream.Length.ToString());
         zip.Close();

    為何壓縮過後ms的長度會大於ScreenStream長度?不是應該會更小才對嗎?
    是不是我那裡寫錯了?或是我對DeflateStream 的理解是錯誤的?
    2007年7月16日 上午 11:37

所有回覆

  • 我想這跟你的資料內容有關係,因為一開始你已經存放JPEG格式了,他某些程度有壓縮處理過,你再做Deflate壓縮,效果不一定顯著,甚至有可能需要產生多的Header資料而造成檔案反而增加大小. 你試試看存BMP.效果一定會出來
    2007年7月21日 下午 02:57