예제 #1
0
        private void Compress()
        {
            if (VQCompression)
            {
                VqCompress();
            }
            else
            {
                _compressStopWath = new Stopwatch();
                _fileName         = _openDialog.FileName;
                OnPropertyChanged("SourceImage");
                var bitmap = new Bitmap(_fileName);
                _compressStopWath.Start();
                bitmap = ApplyHaarTransform(true, false, CodeBookSizePow, bitmap);

                var rle      = new RLE(bitmap);
                var imgCompr = new DwtImage {
                    Height = bitmap.Height, Width = bitmap.Width, Image = rle.CompressImage()
                };
                _compressedData = imgCompr.ToByteArray();
                _compressedData = HuffmanEncoder.Encode(_compressedData);
                byte[] result;

                using (var resultStream = new MemoryStream())
                {
                    using (var compressionStream = new DeflateStream(resultStream, CompressionLevel.Optimal))
                    {
                        compressionStream.Write(_compressedData, 0, _compressedData.Length);
                    }
                    result = resultStream.ToArray();
                }
                _compressedData = result;
                _compressStopWath.Stop();
                _compressed = imgCompr;
            }
            Wind.Dispatcher.Invoke(Decompress);
            Wind.Dispatcher.Invoke(SetResults);
        }
예제 #2
0
        private void Compress()
        {
            if(VQCompression) VqCompress();
            else
            {
                _compressStopWath = new Stopwatch();
                _fileName = _openDialog.FileName;
                OnPropertyChanged("SourceImage");
                var bitmap = new Bitmap(_fileName);
                _compressStopWath.Start();
                bitmap = ApplyHaarTransform(true, false, CodeBookSizePow, bitmap);

                var rle = new RLE(bitmap);
                var imgCompr = new DwtImage {Height = bitmap.Height, Width = bitmap.Width, Image = rle.CompressImage()};
                _compressedData = imgCompr.ToByteArray();
                _compressedData = HuffmanEncoder.Encode(_compressedData);
                byte[] result;

                using (var resultStream = new MemoryStream())
                {
                    using (var compressionStream = new DeflateStream(resultStream, CompressionLevel.Optimal))
                    {
                        compressionStream.Write(_compressedData, 0, _compressedData.Length);
                    }
                    result = resultStream.ToArray();
                }
                _compressedData = result;
                _compressStopWath.Stop();
                _compressed = imgCompr;
            }
            Wind.Dispatcher.Invoke(Decompress);
            Wind.Dispatcher.Invoke(SetResults);
        }