Я пытаюсь сжать поток памяти в другой поток памяти, чтобы я мог загрузить в остальные API.image
- это исходный поток памяти, содержащий изображение tif.
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+ МБ).Это мой первый опыт работы с GZipStream, так что, скорее всего, я что-то упустил, любой совет относительно того, что было бы очень полезно.
РЕДАКТИРОВАТЬ: что-то, что я должен отметить, что было проблемой для меня, в приведенном выше коде,Позиция image
была в самом конце потока ... Таким образом, когда я позвонил image.CopyTo(zipper);
, из-за этой позиции ничего не было скопировано.