private void OpenCompressed(object sender, RoutedEventArgs e) { var openDialog = new OpenFileDialog { Multiselect = false, Filter = "压缩位图文件(*.cbmp)|*.cbmp" }; var result = openDialog.ShowDialog(); if (result != null && result.Value) { var huffmanFile = new HuffmanFile(openDialog.FileName + "_key"); var imageBytes = huffmanFile.ReadEncodedFile(openDialog.FileName); var imageStream = new MemoryStream(imageBytes); ViewModel.Image = new RadBitmap(imageStream); ViewModel.Properties = new ImageProperties(ViewModel.Image.Bitmap, openDialog.OpenFile()); ExifTree.Items.Clear(); foreach (var key in ViewModel.Properties.ExifInfos.Keys) { ExifTree.Items.Add(new RadTreeViewItem() { Header = $"{key} - {ViewModel.Properties.ExifInfos[key]}" }); } } }
private void SaveCompressed(object sender, RoutedEventArgs e) { var saveDialog = new SaveFileDialog() { CheckPathExists = true, Filter = "压缩位图文件(*.cbmp)|*.cbmp" }; var result = saveDialog.ShowDialog(); if (result != null && result.Value) { var encoder = new BmpBitmapEncoder(); var destStream = new MemoryStream(); encoder.Frames.Add(BitmapFrame.Create(ViewModel.ImageSource)); encoder.Save(destStream); var imageBytes = destStream.ToArray(); var huffmanFile = new HuffmanFile(imageBytes); huffmanFile.EncodeFile(saveDialog.FileName, saveDialog.FileName + "_key"); } }