如果我有位圖並且它有RawFormat屬性。如何從System.Drawing.Imaging.ImageFormat獲取contentType
如何從此ImageFormat對象獲取內容類型?
Bitmap image = new Bitmap(stream);
ImageFormat imageFormat = image.RawFormat;
//string contentType = ?
如果我有位圖並且它有RawFormat屬性。如何從System.Drawing.Imaging.ImageFormat獲取contentType
如何從此ImageFormat對象獲取內容類型?
Bitmap image = new Bitmap(stream);
ImageFormat imageFormat = image.RawFormat;
//string contentType = ?
我相信我已經想出了一個簡單的解決方案,非常適合圖像。這使用擴展方法和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包括工作單元測試(以及是正確答案) – Lavamantis
作爲一個小改進,使用GetImageDecoders代替GetImageEncoders可能會更好。在我的系統上沒有EMF文件的編碼器。然而有一個解碼器。 – Dbuggy
如果你要確定從一個文件名(或擴展名)的MIME類型,這裏是使用註冊表中的一個鏈接:Get MimeType from a File Name
我得到503與您的鏈接。 –
@ x2 - 奇怪,我剛剛點擊了我的答案,它適用於我。 HTTP 503(服務不可用)應該是一個臨時性問題。你應該稍後再試。 –
顯示一些代碼? –