Как получить contentType из System.Drawing.Imaging.ImageFormat - PullRequest
9 голосов
/ 24 августа 2011

Если у меня есть Bitmap и у него есть свойство RawFormat.

Как я могу получить тип контента из этого объекта ImageFormat?

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

Ответы [ 2 ]

36 голосов
/ 07 марта 2013

Мне кажется, я придумала простое решение, которое отлично работает с изображениями.При этом используются методы расширения и 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());
}
1 голос
/ 24 августа 2011

Если вы хотите определить тип MIME по имени файла (или расширению), вот ссылка, которая использует реестр: Получить MimeType из имени файла

...