【问题标题】:How to save formatted IMages with savefiledialog?如何使用 savefiledialog 保存格式化的图像?
【发布时间】:2016-02-03 03:14:51
【问题描述】:

所以,我正在 Windows 窗体中创建一个项目,我必须在其中更改图像格式。我为此找到了不同的解决方案,例如: convert tiff to jpg format
c# convert image formats to jpg。 这些解决方案是有效的,但它们都有一个相似之处:

image.Save(path,ImageFormat.Jpeg)

在这段代码中,我将图像保存在一个目录中。我想要做的是用Savefiledialog 保存这个格式化的图像。但是在这种情况下,当我调用Savefiledialog 时,我需要写“图像”名称和格式。如果我不写格式,它会创建一个没有扩展名的简单文件。我想以指定的格式自动保存文件。那么该怎么做呢?

【问题讨论】:

  • 您希望他们在保存文件对话框中键入“[filename].[filetype]”,还是希望他们使用类型选择器?你有过滤字符串吗?添加您的 SaveFileDialog 代码并阐明您希望如何确定文件类型。您基本上需要根据某些条件运行案例语句,并根据他们选择的内容将其保存为不同的类型......但我们无法帮助您提供什么。
  • 此代码:image.Save(path,ImageFormat.Jpeg) 表示此图像将保存在“路径”目录中?
  • SaveFileDialog 不会给你格式 - 只是文件名。您可以从对话框中选择扩展名(一旦返回结果),并相应地保存。

标签: c# winforms


【解决方案1】:

我会像这样写一些简单的东西:

// might make sense to make this a property under the relevant class
Dictionary<string, ImageFormat> mapOfExtensions = 
    new Dictionary<string, ImageFormat>
    {
        {".jpg", ImageFormat.Jpeg},
        {".jpeg", ImageFormat.Jpeg},
        {".png", ImageFormat.Png}
    };

var ext = Path.GetExtension(path);

// safety check - make sure the file extension is what we expect...
if (!mapOfExtensions.Contains(ext)) 
{
    // probably would make sense to throw an error, log a message, etc.
    return;
}

image.Save(path,mapOfExtensions[ext]);  

【讨论】:

  • 不不,我可以做到。我想用 FileDialog 将格式化的图像文件保存在计算机中。例如,我打开 FileDialog 并选择 Desktop 作为要保存图像的目录,然后我再次打开 FIleDialog 并将其保存在 MyDocuments 和 s.o 中。我想轻松地将格式化的图像保存在计算机中。我不想每次都写 image.Save("C://Desktop",mapOfExtensions[ext]) 或 image.Save("D://Images",mapOfExtensions[ext]) 。
  • 我认为你错过了面向对象编程的重点。您将该代码放入一个函数中,并且在您的应用程序中您想要调用它的任何地方,您只需调用该函数。你不必到处写那行。如果要选择默认文件夹,则应将全局字符串变量设置为 string.empty,然后在该函数中对其进行检查,如果未设置,则显示保存文件对话框并进行设置,如果不为空,请使用该文件夹.这个答案没有错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
相关资源
最近更新 更多