如何使用C#中的SaveFileDialog将字节数组保存为磁盘上的png文件?

时间:2013-10-04 15:00:22

标签: c# silverlight

基本上,我有一个程序可以保存本地计算机中的图像。我将此图像预览为大尺寸。我在此预览弹出窗口中有“另存为”按钮。我的问题是,Image保存为byte [],如何使用SaveFileDialog将byte []保存为png文件?

谢谢,

问题就这样解决了;

var saveFileDialog = new SaveFileDialog
                                 {
                                     DefaultExt = ".png",
                                     DefaultFileName = this.ViewDetailSource.ManagedEntityName + " Image",
                                     FilterIndex = 1,
                                     Filter = "All Files|*.*"
                                 };

        bool? result = saveFileDialog.ShowDialog();

        if (result.HasValue && result.Value)
        {
            using (var filestream = saveFileDialog.OpenFile())
            {
                filestream.Write(this.imagecapableentity.EntityImage, 0, this.imagecapableentity.EntityImage.Length);
            }
        }

EntityImage是byte []

全心全意,

5 个答案:

答案 0 :(得分:3)

SaveFileDialog不用于实际保存文件,而是用于收集有关创建文件过程的元信息。也就是说,它将帮助您收集文件路径以及用户是否取消了保存过程。

收集文件路径并知道用户保存文件后,您必须实际使用File类来创建文件:File.WriteAllBytes(...)是一种好方法这样做。

答案 1 :(得分:2)

只需使用SaveFileDialog提供的文件名创建一个FileStream实例,并调用其方法Write,写入byte []

答案 2 :(得分:1)

首先使用SaveFileDialog:https://stackoverflow.com/a/5136341/787828

然后byte []转换为Image并保存:https://stackoverflow.com/a/8946937/787828

答案 3 :(得分:0)

SaveFileDialog仅用于获取用户想要保存文件的名称,而不是用于实际保存。您可以改为使用它:

System.IO.File.WriteAllBytes(savedialog.FileName, bytearray);

savedialogSaveDialogbytearray是你的形象。

答案 4 :(得分:-1)

您可以使用static void System.IO.File.WriteAllBytes(string path, byte[] bytes)

执行此操作
byte[] buffer = ... ;
File.WriteAllBytes(@"c:\*.png", buffer);