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

x2.*_*x2. 9 c# content-type image

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

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

Bitmap image = new Bitmap(stream);
ImageFormat imageFormat = image.RawFormat;
//string contentType = ?
Run Code Online (Sandbox Code Playgroud)

Pet*_*eii 36

我相信我已经提出了一个适用于图像的简单解决方案.这使用扩展方法和Linq,因此它将在.net framework 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());
}
Run Code Online (Sandbox Code Playgroud)

  • +1包括工作单元测试(好,并且是正确的答案) (3认同)
  • 作为一个小改进,使用GetImageDecoders而不是GetImageEncoders可能会更好.在我的系统上没有EMF文件的编码器.但是有一个解码器. (3认同)