国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#獲取圖片的后綴名

2019-11-17 03:21:01
字體:
來源:轉載
供稿:網友

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);            }

本文來自16℃·夏 原文地址 :http://www.sum16.com/desinger/c-sharp-get-image-file-extension.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德阳市| 博湖县| 米泉市| 伊吾县| 桂平市| 三都| 宜黄县| 武山县| 苏尼特左旗| 临沭县| 保康县| 那曲县| 沙田区| 济南市| 宝兴县| 普兰店市| 偃师市| 波密县| 筠连县| 福海县| 沙田区| 甘南县| 定兴县| 西峡县| 横山县| 陆川县| 吐鲁番市| 宜城市| 沅江市| 洮南市| 库尔勒市| 竹北市| 大竹县| 大关县| 工布江达县| 高密市| 黄浦区| 开鲁县| 洪江市| 呼玛县| 马尔康县|