如何保存BitmapImage通过SaveFileDialog从WPF

本文关键字:通过 SaveFileDialog WPF BitmapImage 何保存 保存 | 更新日期: 2023-09-27 18:14:43

我尝试通过标准Windows实现它的方式。窗体(获取有效的对话sult. ok)

            System.Windows.Forms.SaveFileDialog dlg = new System.Windows.Forms.SaveFileDialog();
            dlg.FileName = "Document"; // Default file name
           // dlg.DefaultExt = ".jpg"; // Default file extension
            dlg.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
            if(dlg.ShowDialog()== System.Windows.Forms.DialogResult.OK) 
if (dlg.DialogResult.HasValue && splashDialog.DialogResult.Value)
            {
              string fName = dlg.FileName; 
              if (dlg.FileName != "")
              {
                 System.IO.Stream fileStream = (System.IO.FileStream)dlg.OpenFile(); 
                  fileStream.Close();
               }
             }

这是使用Windows窗体,但它保存空白图像((

如何保存BitmapImage通过SaveFileDialog从WPF

)

你可以这样做:

var encoder = new JpegBitmapEncoder(); // Or PngBitmapEncoder, or whichever encoder you want
encoder.Frames.Add(BitmapFrame.Create(yourImage));
using (var stream = dlg.OpenFile())
{
    encoder.Save(stream);
}

顺便说一句,WPF中也有一个SaveFileDialog,你不必使用Windows窗体中的

对于WPF代码将是这样的:

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "Document";             
dlg.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
if (dlg.ShowDialog() == true)
{
    var encoder = new JpegBitmapEncoder(); // Or PngBitmapEncoder, or whichever encoder you want
    encoder.Frames.Add(BitmapFrame.Create(bi));
    using (var stream = dlg.OpenFile())
    {
         encoder.Save(stream);
    }
}

这里bi是BitmapImage