2

基本上,我有一个程序可以从本地计算机保存图像。我将此图像预览为大尺寸。我在此预览弹出窗口上有另存为按钮。我的问题是,图像保存为 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 是字节[]

谢谢大家,

4

5 回答 5

4

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

一旦您收集了文件路径并知道用户可以保存文件,您就必须实际使用File该类来创建文件:File.WriteAllBytes(...)这是一种很好的方法。

于 2013-10-04T15:09:24.957 回答
2

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

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

于 2013-10-04T15:07:02.927 回答
2

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

于 2013-10-04T15:07:12.123 回答
0

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

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

你在哪里,savedialog是你的形象。SaveDialogbytearray

于 2013-10-04T15:08:41.370 回答
-1

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

byte[] buffer = ... ;
File.WriteAllBytes(@"c:\*.png", buffer);
于 2013-10-04T15:09:20.403 回答