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); }
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); }