Získat ImageFormat z přípony souboru

hlasů
22

Existuje rychlý způsob, jak získat objekt ImageFormat přiřazeny ke konkrétnímu příponu souboru? Sháním rychleji než porovnávání řetězců pro každý formát.

Položena 26/08/2009 v 22:58
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
30

Zde je několik starý kód, který jsem zjistil, že by měl stačit:

 string InputSource = "mypic.png";
 System.Drawing.Image imgInput = System.Drawing.Image.FromFile(InputSource);
 Graphics gInput = Graphics.fromimage(imgInput);
 Imaging.ImageFormat thisFormat = imgInput.RawFormat;

To vyžaduje skutečně otevření a testování image - přípona souboru je ignorován. Za předpokladu, že jsou v každém případě otevření souboru, to je mnohem robustnější než věřit příponu souboru.

Pokud nejste otevřít soubory, je tu (v představení smyslu) nic „rychleji“ než porovnání řetězců - rozhodně ne volání do OS dostat přípony souboru mapování.

Odpovězeno 26/08/2009 v 23:04
zdroj uživatelem

hlasů
26
private static ImageFormat GetImageFormat(string fileName)
{
    string extension = Path.GetExtension(fileName);
    if (string.IsNullOrEmpty(extension))
        throw new ArgumentException(
            string.Format("Unable to determine file extension for fileName: {0}", fileName));

    switch (extension.ToLower())
    {
        case @".bmp":
            return ImageFormat.Bmp;

        case @".gif":
            return ImageFormat.Gif;

        case @".ico":
            return ImageFormat.Icon;

        case @".jpg":
        case @".jpeg":
            return ImageFormat.Jpeg;

        case @".png":
            return ImageFormat.Png;

        case @".tif":
        case @".tiff":
            return ImageFormat.Tiff;

        case @".wmf":
            return ImageFormat.Wmf;

        default:
            throw new NotImplementedException();
    }
}
Odpovězeno 23/11/2012 v 06:30
zdroj uživatelem

hlasů
5
    private static ImageFormat GetImageFormat(string format)
    {
        ImageFormat imageFormat = null;

        try
        {
            var imageFormatConverter = new ImageFormatConverter();
            imageFormat = (ImageFormat)imageFormatConverter.ConvertFromString(format);
        }
        catch (Exception)
        {

            throw;
        }

        return imageFormat;
    }
Odpovězeno 10/11/2014 v 14:32
zdroj uživatelem

hlasů
1

viz článek CodeProject o přidružení souborů http://www.codeproject.com/KB/dotnet/System_File_Association.aspx

Odpovězeno 26/08/2009 v 23:02
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more