程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#獲得圖片的後綴名解析

C#獲得圖片的後綴名解析

編輯:C#入門知識

C#獲得圖片的後綴名解析。本站提示廣大學習愛好者:(C#獲得圖片的後綴名解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#獲得圖片的後綴名解析正文


要說,這也是一個很簡略的功效,沒需要開一篇博客這麼年夜動干戈。 關於一張曉得全途徑的照片,假如其途徑包括後綴名的話,要獲得後綴名,只須要一行代碼便可:

var ext = System.IO.Path.GetExtension("C:\\soar.jpg");

可是,假如這個文件的文件名不包括後綴怎樣辦? 在C#中並沒有供給直接獲得圖片格局的辦法,假如想依據圖片(也就是Image對象)獲得圖片格局,那末就須要另辟門路了。 起首,我們可以在`Image`對象中看到一個類型為`ImageFormat`的`RawFormat`屬性。然則,經由過程這個屬性,我們只能取到這個圖片格局的Guid,而沒法取到詳細的稱號。不外,在`ImageFormat`類中采取靜態屬性的方法枚舉了幾個經常使用的圖片格局,有了這些,我們便可以經由過程“逐個對比”的方法來拿到一張圖片詳細的後綴名了。 起首,我們須要獲得在`ImageFormat`中枚舉出來的圖片格局。硬編碼是一個很蠢的主張,所以,我們采取反射取值。


private static Dictionary<String, ImageFormat> GetImageFormats()
{
    var dic = new Dictionary<String, ImageFormat>();
    var properties = typeof(ImageFormat).GetProperties(BindingFlags.Static | BindingFlags.Public);
    foreach (var property in properties)
    {
        var format = property.GetValue(null, null) as ImageFormat;
        if (format == null) continue;
        dic.Add(("." + property.Name).ToLower(), format);
    }
    return dic;
}

經由過程下面的代碼,我們就可以取到“圖片後綴”和ImageFormat實例的對應關系。須要留意的是,關於jpg格局,這裡取到的是jpeg。反射的效力很低,所以我們須要將發生的成果緩存起來。

private static Dictionary<String, ImageFormat> _imageFormats;
/// <summary>
/// 獲得 一切支撐的圖片格局字典
/// </summary>
public static Dictionary<String, ImageFormat> ImageFormats
{
    get
    {
        return _imageFormats ?? (_imageFormats = GetImageFormats());
    }
}

采取按需加載,削減啟動時光。不外,假如你是多線程情況,最好可以或許加個鎖。剩下的工作就好辦了,輪回這個字典,比較字典值的Guid,前往字典的鍵便可以。

/// <summary>
/// 依據圖象獲得圖象的擴大名
/// </summary>
/// <param name="image"></param>
/// <returns></returns>
public static String GetExtension(Image image)
{
    foreach (var pair in ImageFormats)
    {
        if (pair.Value.Guid == image.RawFormat.Guid)
        {
            return pair.Key;
        }
    }
    throw new BadImageFormatException();
}

應用辦法:

using (var img = Image.FromFile(@"C:\soar"))
{
    var ext = GetExtension(img);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved