Get ImageFormat from File Extension
Here's some old code I found that should do the trick:
var inputSource = "mypic.png";
var imgInput = System.Drawing.Image.FromFile(inputSource);
var thisFormat = imgInput.RawFormat;
This requires actually opening and testing the image--the file extension is ignored. Assuming you are opening the file anyway, this is much more robust than trusting a file extension.
If you aren't opening the files, there's nothing "quicker" (in a performance sense) than a string comparison--certainly not calling into the OS to get file extension mappings.
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();
}
}