我想壓縮一個內存流到另一個內存流,所以我可以上傳到其餘的API。 image
是包含tif圖像的初始內存流。GZipStream不壓縮?
WebRequest request = CreateWebRequest(...);
request.ContentType = "application/zip";
MemoryStream zip = new MemoryStream();
GZipStream zipper = new GZipStream(zip, CompressionMode.Compress);
image.CopyTo(zipper);
zipper.Flush();
request.ContentLength = zip.Length; // zip.Length is returning 0
Stream reqStream = request.GetRequestStream();
zip.CopyTo(reqStream);
request.GetResponse().Close();
zip.Close();
讓我明白了,什麼我寫信給GZipStream將被壓縮並寫入任何數據流被傳遞到它的構造函數。當我將圖像流複製到拉鍊時,它看起來沒有任何實際複製(圖像是200 + MB)。這是我第一次使用GZipStream的經驗,所以很可能我錯過了一些東西,任何建議,不勝感激。
編輯: 是我應該注意的是對我的一個問題,在上面的代碼,image
的位置是在流的盡頭......因此,當我打電話image.CopyTo(zipper);
什麼也沒有因位置複製。
只是注意:如果您的TIFF格式已經被壓縮了你不會得到非常可觀的成績(大部分是,我認爲)。 – Cameron 2011-06-06 16:45:13
這些是未壓縮的GeoTiffs。另外,我上傳這些圖片的REST API要求上傳爲zip。 – 2011-06-06 16:46:30