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

时间:2011-02-14 10:11:24

标签: c#

我希望能够根据在保存文件对话框中输入的扩展名来保存图像。我发现只需输入例如“JPG”当然不会导致Save方法使用这种格式。 解析扩展,然后使用例如切换和设置正确的格式听起来有点尴尬。或者没有更好的方法?

2 个答案:

答案 0 :(得分:12)

您可以获取SaveDialog.FileName中指定的文件名,然后使用Path.GetExtension()或类似名称,您可以获得字符串,它将用作扩展程序。

您将要做的事情取决于您的具体应用程序设计,如果您要保存文本文件,您也可以将其命名为image1.png,但它仍然是文本文件。

如果您在内存中有一个图像对象并希望根据所选扩展名以适当的格式保存,我会使用一个开关/案例并使用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 :(得分: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

在新西兰已经很晚了,我不能写一个例子。但是,如果你真的需要一个例子告诉我,明天我会提供一个。

相关问题