/// <summary> /// Compress stream using defleate algorithm /// </summary> /// <param name="stream">Stream to compress</param> /// <param name="output">Output streamm</param> /// <param name="count">Count of bytes to compress</param> /// <param name="offset">Offset on the output stream</param> /// <param name="report">Progress report handler</param> public static void CompressTo(this Stream stream, Stream output, long count, long offset = 0, ProgressReportEventHandler report = null) { if (output == null) { throw new ArgumentNullException("output"); } output.Position = offset; using (DeflateStream deflateStream = new DeflateStream(output, CompressionMode.Compress, true)) { deflateStream.CopyFrom(stream, count, report); } }