public static byte[] CompessWithDecompressionHelp(this byte[] value, DecompressionHelpMode mode) { var compression = new GzipBlockCompression(); var compressed = compression.Compress(new Block(value, 1), mode); return(compressed.Bytes.ToArray()); }
public Block Compress(Block inputBlock, DecompressionHelpMode decompressionHelpMode) { if (inputBlock.Bytes.Count == 0) { return(new Block(EmptyBytes, inputBlock.Offset)); } using (var memoryStream = new MemoryStream()) { using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true)) { // ReSharper disable once AssignNullToNotNullAttribute gZipStream.Write(inputBlock.Bytes.Array, inputBlock.Bytes.Offset, inputBlock.Bytes.Count); } var compressedBytes = memoryStream.ToArray(); var buffer = new ArraySegment <byte>(compressedBytes, 0, (int)memoryStream.Position); if (decompressionHelpMode == DecompressionHelpMode.BlockLengthInMimetypeSection) { GzipHeader.FindFirst(buffer)?.SetMimetypeBytes(BitConverter.GetBytes(buffer.Count)); } return(new Block(buffer, inputBlock.Offset)); } }
public static byte[] CompessWithDecompressionHelp(this string text, DecompressionHelpMode mode) { return(text.ToBytes().CompessWithDecompressionHelp(mode)); }