如何使用 C# 中的 SaveFileDialog 将字节数组另存为 png 文件



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

实体图像是字节[]

谢谢大家,

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

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

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

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

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

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

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

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

您可以使用

static void System.IO.File.WriteAllBytes(string path, byte[] bytes)

byte[] buffer = ... ;
File.WriteAllBytes(@"c:*.png", buffer);

最新更新