最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#獲取圖片的后綴名解析

 更新時(shí)間:2014年02月18日 16:27:22   作者:  
這篇文章主要介紹了C#獲取圖片的后綴名解析,需要的朋友可以參考下

要說,這也是一個(gè)很簡單的功能,沒必要開一篇博客這么大動(dòng)干戈。 對于一張知道全路徑的照片,如果其路徑包含后綴名的話,要取得后綴名,只需要一行代碼即可:

復(fù)制代碼 代碼如下:

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

可是,如果這個(gè)文件的文件名不包含后綴怎么辦? 在C#中并沒有提供直接獲取圖片格式的方法,如果想根據(jù)圖片(也就是Image對象)獲取圖片格式,那么就需要另辟蹊徑了。 首先,我們可以在`Image`對象中看到一個(gè)類型為`ImageFormat`的`RawFormat`屬性。但是,通過這個(gè)屬性,我們只能取到這個(gè)圖片格式的Guid,而無法取到具體的名稱。不過,在`ImageFormat`類中采用靜態(tài)屬性的方式羅列了幾個(gè)常用的圖片格式,有了這些,我們就可以通過“一一對照”的方式來拿到一張圖片具體的后綴名了。 首先,我們需要得到在`ImageFormat`中羅列出來的圖片格式。硬編碼是一個(gè)很蠢的主意,所以,我們采用反射取值。

復(fù)制代碼 代碼如下:

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實(shí)例的對應(yīng)關(guān)系。需要注意的是,對于jpg格式,這里取到的是jpeg。反射的效率很低,所以我們需要將產(chǎn)生的結(jié)果緩存起來。

復(fù)制代碼 代碼如下:

private static Dictionary<String, ImageFormat> _imageFormats;
/// <summary>
/// 獲取 所有支持的圖片格式字典
/// </summary>
public static Dictionary<String, ImageFormat> ImageFormats
{
    get
    {
        return _imageFormats ?? (_imageFormats = GetImageFormats());
    }
}

采用按需加載,減少啟動(dòng)時(shí)間。不過,如果你是多線程環(huán)境,最好能夠加個(gè)鎖。剩下的事情就好辦了,循環(huán)這個(gè)字典,對比字典值的Guid,返回字典的鍵就可以。

復(fù)制代碼 代碼如下:

/// <summary>
/// 根據(jù)圖像獲取圖像的擴(kuò)展名
/// </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();
}

使用方法:

復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • C#和lua相互調(diào)用的方法教程

    C#和lua相互調(diào)用的方法教程

    lua是一種腳本語言,可以方便的移植到各種宿主語言中,并且可以支持熱更新,在游戲開發(fā)中也能當(dāng)做主要的語言來編寫游戲的邏輯,所以這篇文章主要給大家介紹了關(guān)于C#和lua相互調(diào)用的方法教程,需要的朋友可以參考下。
    2017-11-11
  • C#、ASP.NET通用工具類IsWhat?(可以判斷數(shù)字、身份證、數(shù)據(jù)類型等等)

    C#、ASP.NET通用工具類IsWhat?(可以判斷數(shù)字、身份證、數(shù)據(jù)類型等等)

    這篇文章主要介紹了C#、ASP.NET通用工具類IsWhat?(可以判斷數(shù)字、身份證、數(shù)據(jù)類型等等),本文收集整理了多個(gè)擴(kuò)展函數(shù),簡單實(shí)用,項(xiàng)目必備,如值范圍、在里面嗎、是null或""?、是零?等等,需要的朋友可以參考下
    2015-06-06
  • C# Soap調(diào)用WebService的實(shí)例

    C# Soap調(diào)用WebService的實(shí)例

    下面小編就為大家?guī)硪黄狢# Soap調(diào)WebService的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Revit API取得變量的內(nèi)參名稱實(shí)例代碼

    Revit API取得變量的內(nèi)參名稱實(shí)例代碼

    這篇文章介紹了Revit API取得變量的內(nèi)參名稱實(shí)例代碼,有需要的朋友可以參考一下
    2013-11-11
  • Unity3D實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲(2)

    Unity3D實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲(2)

    這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲的第二部分,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C#精確計(jì)算年齡的方法分析

    C#精確計(jì)算年齡的方法分析

    這篇文章主要介紹了C#精確計(jì)算年齡的方法,實(shí)例分析了C#計(jì)算時(shí)間的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • C#數(shù)據(jù)庫操作之LINQ to SQL技術(shù)詳解

    C#數(shù)據(jù)庫操作之LINQ to SQL技術(shù)詳解

    本文詳細(xì)介紹了LINQtoSQL技術(shù),包括其基本概念、使用方法、動(dòng)態(tài)創(chuàng)建數(shù)據(jù)庫、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)等操作
    2024-12-12
  • C#中SQL Command的基本用法

    C#中SQL Command的基本用法

    今天小編就為大家分享一篇關(guān)于C#中SQL Command的基本用法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 輕松學(xué)習(xí)C#的異常處理

    輕松學(xué)習(xí)C#的異常處理

    輕松學(xué)習(xí)C#的異常處理,對C#的異常處理感興趣的朋友可以參考本篇文章,幫助大家更靈活的運(yùn)用C#的異常處理
    2015-11-11
  • c# 日歷控件的實(shí)現(xiàn)

    c# 日歷控件的實(shí)現(xiàn)

    這篇文章主要介紹了c# 實(shí)現(xiàn)日歷的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12

最新評論

清河县| 甘孜| 南京市| 嘉荫县| 河源市| 白沙| 仁布县| 慈利县| 湖南省| 灵璧县| 青州市| 西青区| 天峨县| 含山县| 黄石市| 娱乐| 开封市| 明水县| 清镇市| 阿拉善盟| 镇雄县| 庆安县| 马公市| 墨江| 富裕县| 邹平县| 西畴县| 潜山县| 安乡县| 武汉市| 高州市| 紫阳县| 吴忠市| 定远县| 太仓市| 肇州县| 纳雍县| 焦作市| 黑山县| 石阡县| 苍山县|