コード例 #1
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];
        }
コード例 #2
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]);
        }