Beispiel #1
0
        public static byte[] Compress(this byte[] buffer)
        {
            MemoryStream inputStream = new MemoryStream(buffer);
            MemoryStream outputStream = new MemoryStream(buffer.Length / 8);
            LZMAEncoder = new Encoder();
            byte[] properties = LZMAEncoder.getCoderProperties();
            try
            {
                LZMAEncoder.Code(inputStream, outputStream, buffer.Length, buffer.Length / 8, null);

            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            byte[] compressedData = outputStream.ToArray();
            int size = 17 + compressedData.Length;
            using (MemoryStream finalStream = new MemoryStream(size))
            {
                ///Check if compression got worse if did return original value
                if (size > buffer.Length)
                    return buffer;
                finalStream.Write(LZMAID);
                finalStream.Write(buffer.Length);
                finalStream.Write(compressedData.Length);
                finalStream.Write(properties);
                finalStream.Write(compressedData);
                return finalStream.ToArray();
            }
        }