如何从system . drawing . image . imageformat获取contentType

本文关键字:imageformat 获取 contentType image drawing system | 更新日期: 2023-09-27 18:06:41

如果我有位图,它有RawFormat属性。

我如何从这个ImageFormat对象获得内容类型?

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

如何从system . drawing . image . imageformat获取contentType

我相信我已经想出了一个简单的解决方案,它对图像非常有效。它使用了扩展方法和Linq,所以它可以在。net框架3.5+上工作。下面是代码和单元测试:

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类型,这里有一个使用注册表的链接: