/// <summary> /// 지정된 데이타를 압축한다. /// </summary> /// <param name="input">압축할 Data</param> /// <returns>압축된 Data</returns> public override byte[] Compress(byte[] input) { if(IsDebugEnabled) log.Debug(CompressorTool.SR.CompressStartMsg); // check input data if(input.IsZeroLength()) { if(log.IsWarnEnabled) log.Warn(CompressorTool.SR.InvalidInputDataMsg); return new byte[0]; } byte[] output; using(var outStream = new MemoryStream()) using(var inStream = new MemoryStream(input)) { var encoder = new NSoft.NFramework.Compressions.SevenZip.Compression.LZMA.LzmaEncoder(); encoder.SetCoderProperties(propIDs, properties); encoder.WriteCoderProperties(outStream); long size = inStream.Length; for(int i = 0; i < 8; i++) outStream.WriteByte((byte)(size >> (8 * i))); encoder.Code(inStream, outStream, -1, -1, null); output = outStream.ToArray(); } if(IsDebugEnabled) log.Debug(CompressorTool.SR.CompressResultMsg, input.Length, output.Length, output.Length / (double)input.Length); return output ?? new byte[0]; }
/// <summary> /// 지정된 데이타를 압축한다. /// </summary> /// <param name="input">압축할 Data</param> /// <returns>압축된 Data</returns> public override byte[] Compress(byte[] input) { if (IsDebugEnabled) { log.Debug(CompressorTool.SR.CompressStartMsg); } // check input data if (input.IsZeroLength()) { if (log.IsWarnEnabled) { log.Warn(CompressorTool.SR.InvalidInputDataMsg); } return(new byte[0]); } byte[] output; using (var outStream = new MemoryStream()) using (var inStream = new MemoryStream(input)) { var encoder = new NSoft.NFramework.Compressions.SevenZip.Compression.LZMA.LzmaEncoder(); encoder.SetCoderProperties(propIDs, properties); encoder.WriteCoderProperties(outStream); long size = inStream.Length; for (int i = 0; i < 8; i++) { outStream.WriteByte((byte)(size >> (8 * i))); } encoder.Code(inStream, outStream, -1, -1, null); output = outStream.ToArray(); } if (IsDebugEnabled) { log.Debug(CompressorTool.SR.CompressResultMsg, input.Length, output.Length, output.Length / (double)input.Length); } return(output ?? new byte[0]); }