using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using System.IO.Compression; namespace Sleis.Utility { public class CompressionUtility { // Use this method is used to read all bytes from a stream. public static int ReadAllBytesFromStream(Stream stream, byte[] buffer) { int offset = 0; int totalCount = 0; while (true) { int bytesRead = stream.Read(buffer, offset, 1024); if (bytesRead == 0) { break; } offset += bytesRead; totalCount += bytesRead; } return totalCount; } public static byte[] Compress(byte[] content) { // byte[] result = null; using (MemoryStream ms = new MemoryStream()) { using (GZipStream stream = new GZipStream(ms, CompressionMode.Compress, true)) { stream.Write(content, 0, content.Length); } ms.Position = 0; // ReadAllBytesFromStream(ms, result); return ms.ToArray(); } // return result; } public static byte[] Decompress(byte[] content) { List result = new List(); using (MemoryStream ms = new MemoryStream()) { //write content to stream ms.Write(content, 0, content.Length); ms.Position = 0; using (GZipStream stream = new GZipStream(ms, CompressionMode.Decompress)) { int retVal = 0; while (retVal >= 0) { retVal = stream.ReadByte(); if (retVal != -1) { result.Add((byte)retVal); } } return result.ToArray(); } } } } }