Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get contentType from System.Drawing.Imaging.ImageFormat

If I have Bitmap and it has RawFormat property.

How can I get Content Type from this ImageFormat object?

Bitmap image = new Bitmap(stream);
ImageFormat imageFormat = image.RawFormat;
//string contentType = ?
like image 283
x2. Avatar asked Aug 24 '11 04:08

x2.


2 Answers

I believe I've come up with a simple solution that works great for images. This uses extension methods and Linq, so it will work on .net framework 3.5+. Here's the code and unit test:

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());
}
like image 122
Peter Pompeii Avatar answered Oct 19 '22 14:10

Peter Pompeii


If you want to determine the MIME type from a file name (or extension), here is a link that uses the registry: Get MimeType from a File Name

like image 31
Simon Mourier Avatar answered Oct 19 '22 14:10

Simon Mourier