我想压缩一个内存流到另一个内存流,所以我可以上传到其余的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