如何从“保存文件”对话框中获取文件扩展名?

15

我希望能够根据在保存文件对话框中输入的扩展名来保存图像。 我已经发现,仅输入“JPG”等不会使保存方法当然使用此格式。 对扩展名进行解析,然后使用switch设置正确的格式听起来有点笨拙。 还是没有更好的方法吗?

2个回答

16

可以通过获取SaveDialog.FileName中指定的文件名,然后使用Path.GetExtension()或类似的方法获取用作扩展名的字符串

接下来要做什么取决于您特定的应用程序设计。如果要保存文本文件,也可以将其命名为image1.png,但它仍然是文本文件。

如果您在内存中拥有图像对象并且想要以所选扩展名的正确格式进行保存,则可以使用switch/case语句,并使用Image.Save的适当重载或参数值来处理不同的图像格式。

示例

if(DialogResult.OK == saveDialog.ShowDialog())
{
    var extension = Path.GetExtension(saveDialog.FileName);

    switch(extension.ToLower())
    {
        case ".jpg":
            // ToDo: Save as JPEG
            break;
        case ".png":
            // ToDo: Save as PNG
            break;
        default:
            throw new ArgumentOutOfRangeException(extension);
    }
}

1

在获得扩展名后,如@David所建议的那样,您应该将其映射到MIME类型,请参见http://kseesharp.blogspot.com/2008/04/c-get-mimetype-from-file-name.html。这使您能够处理多个扩展名,例如“.jpg”和“.jpeg”。

然后,您将不得不使用正确的编码器保存图像,请参见http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-saving-cropping-and-resizing

现在是新西兰时间晚上,我懒得写一个示例。但是,如果您真的需要一个示例,请告诉我,明天我会提供一个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接