基本上,我有一个程序可以保存本地计算机中的图像。我将此图像预览为大尺寸。我在此预览弹出窗口中有“另存为”按钮。我的问题是,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 []
全心全意,
答案 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);
savedialog
是SaveDialog
,bytearray
是你的形象。
答案 4 :(得分:-1)
您可以使用static void System.IO.File.WriteAllBytes(string path, byte[] bytes)
byte[] buffer = ... ;
File.WriteAllBytes(@"c:\*.png", buffer);