如何从System.Drawing.Imaging.ImageFormat获取contentType

如果我有Bitmap并且它具有RawFormat属性。

如何从此ImageFormat对象获取内容类型?

Bitmap image = new Bitmap(stream); ImageFormat imageFormat = image.RawFormat; //string contentType = ? 

我相信我已经想出了一个适用于图像的简单解决方案。 这使用扩展方法和Linq,因此它将在.net framework 3.5+上运行。 这是代码和unit testing:

 public static string GetMimeType(this Image image) { return image.RawFormat.GetMimeType(); } public static string GetMimeType(this ImageFormat imageFormat) { ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); return codecs.First(codec => codec.FormatID == imageFormat.Guid).MimeType; } [TestMethod] public void can_get_correct_mime_type() { Assert.AreEqual("image/jpeg", ImageFormat.Jpeg.GetMimeType()); Assert.AreEqual("image/gif", ImageFormat.Gif.GetMimeType()); Assert.AreEqual("image/png", ImageFormat.Png.GetMimeType()); } 

如果要从文件名(或扩展名)确定MIME类型,请使用以下链接: 从文件名获取MimeType