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

c#獲取圖片正確格式的方法

 更新時(shí)間:2020年07月07日 09:26:35   作者:Soar、毅  
這篇文章主要介紹了c#獲取圖片正確格式的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

大部分時(shí)候,我們可以通過從圖片路徑中截取擴(kuò)展名的方式拿到一個(gè)圖片的格式:

var ext = Path.GetExtension("C:\\coderbusy.jpg");
Console.WriteLine(ext);

這將會(huì)顯示出:

jpg

但是如果我們拿到的只是數(shù)據(jù)流或者是路徑名不被信任的場(chǎng)景(比如擴(kuò)展名是隨機(jī)字符串的臨時(shí)文件)那么我們可能就需要從文件內(nèi)容反推文件格式。

幸運(yùn)的是:.NET 為我們提供了 Image 類型用于表示一個(gè)圖片。Image 類型包含一個(gè)類型為 ImageFormat 的 RawFormat 屬性,通過它我們可以準(zhǔn)確的拿到圖片的格式。如果我們直接調(diào)用 RawFormat 屬性的 ToString 方法,就能拿到圖片的原始格式:

var img = Image.FromFile(@"D:\coderbusy.jpg");
Console.WriteLine(img.RawFormat.ToString());

這將會(huì)顯示出:

Jpeg

不幸的是,在使用 .NET Framework 2 版本時(shí),ImageFormat 的 ToString 方法實(shí)現(xiàn)有誤,這導(dǎo)致同樣的代碼在 .NET Framework 2 下的輸出是這個(gè)樣子的:

[ImageFormat: b96b3cae-0728-11d3-9d7b-0000f81ef32e]

為了做到代碼全平臺(tái)通用,筆者封裝了 ImageHelper 類型,該類型包含一個(gè) GetExtension 方法。通過調(diào)用該方法可以準(zhǔn)確的獲取到圖片的原始格式:

public static class ImageHelper
{
	static ImageHelper()
	{
		lock (typeof(ImageHelper))
		{
			_mapping = GetImageFormatMapping();
		}
	}
	private static IDictionary<Guid, String> _mapping;
	private static IDictionary<Guid, String> GetImageFormatMapping()
	{
		var dic = new Dictionary<Guid, String>();
		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[format.Guid] = "." + property.Name.ToLower();
		}
		return dic;
	}

	public static String GetExtension(Image image)
	{
		var format = image.RawFormat;
		if (_mapping.ContainsKey(format.Guid))
		{
			return _mapping[format.Guid];
		}
		return String.Empty;
	}
}

以上代碼在 ImageHelper 的靜態(tài)構(gòu)造函數(shù)中反射獲取了 ImageFormat 類型的所有靜態(tài)字段,并將字段的 Guid 值與字段名稱做了一個(gè)映射。當(dāng)我們需要獲取某個(gè)圖片的格式時(shí),先通過 RawForamt 屬性獲得 Guid ,之后查表給出對(duì)應(yīng)的格式。

調(diào)用方式如下:

var img = Image.FromFile(@"D:\coderbusy.jpg");
var ext = ImageHelper.GetExtension(img);
Console.WriteLine(ext);

以上就是c#獲取圖片正確格式的方法的詳細(xì)內(nèi)容,更多關(guān)于C#獲取圖片格式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • DirectoryEntry配置IIS7出現(xiàn)ADSI Error:未知錯(cuò)誤(0x80005000)

    DirectoryEntry配置IIS7出現(xiàn)ADSI Error:未知錯(cuò)誤(0x80005000)

    這篇文章主要介紹了DirectoryEntry配置IIS7出現(xiàn)ADSI Error:未知錯(cuò)誤(0x80005000)的解決辦法
    2015-09-09
  • 用C#繪制九宮格形式的圖片

    用C#繪制九宮格形式的圖片

    大家好,本篇文章主要講的是用C#繪制九宮格形式的圖片,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • 詳解C# WinForm如何實(shí)現(xiàn)自動(dòng)更新程序

    詳解C# WinForm如何實(shí)現(xiàn)自動(dòng)更新程序

    在C/S這種模式中,自動(dòng)更新程序就顯得尤為重要,它不像B/S模式,直接發(fā)布到服務(wù)器上,瀏覽器點(diǎn)個(gè)刷新就可以了。本文就為大家準(zhǔn)備了WinForm實(shí)現(xiàn)自動(dòng)更新程序的示例代碼,需要的可以參考一下
    2022-10-10
  • C#中Json字符串的各種應(yīng)用類實(shí)例講解

    C#中Json字符串的各種應(yīng)用類實(shí)例講解

    這篇文章主要介紹了C#中Json字符串的各種應(yīng)用類實(shí)例講解的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • 基于WPF平臺(tái)使用純C#制作流體動(dòng)畫的代碼示例

    基于WPF平臺(tái)使用純C#制作流體動(dòng)畫的代碼示例

    在 WPF 應(yīng)用開發(fā)中,為界面添加生動(dòng)的動(dòng)畫效果能顯著提升用戶體驗(yàn),通常,我們會(huì)結(jié)合 XAML 和 C# 來(lái)打造各種動(dòng)畫,但今天我們聚焦于如何僅用純 C# 在 WPF 平臺(tái)上制作出令人驚艷的流體動(dòng)畫,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2025-01-01
  • C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標(biāo)

    C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標(biāo)

    這篇文章主要介紹了C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標(biāo),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • 基于Unity編寫一個(gè)九宮格抽獎(jiǎng)軟件

    基于Unity編寫一個(gè)九宮格抽獎(jiǎng)軟件

    這篇文章主要為大家介紹了如何利用Unity編寫一個(gè)年會(huì)抽獎(jiǎng)軟件,還能設(shè)置中獎(jiǎng)概率。文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-03-03
  • C#實(shí)現(xiàn)的MD5加密功能與用法示例

    C#實(shí)現(xiàn)的MD5加密功能與用法示例

    這篇文章主要介紹了C#實(shí)現(xiàn)的MD5加密功能與用法,結(jié)合實(shí)例形式分析了C# MD5加密類的定義與使用方法,需要的朋友可以參考下
    2017-01-01
  • C# Winform截圖指定控件范圍內(nèi)的圖像的流程步驟

    C# Winform截圖指定控件范圍內(nèi)的圖像的流程步驟

    工作所需,需要截圖軟件跑出來(lái)的界面上的圖表,但是窗口本身是可以縮放的,圖表也是做的可以跟著窗體大小一起縮放,所以就寫了一個(gè)函數(shù),用于截圖圖表容器內(nèi)的圖像,文中有函數(shù)源碼供大家參考,需要的朋友可以參考下
    2024-10-10
  • C#使用OleDb操作Excel和數(shù)據(jù)庫(kù)的策略

    C#使用OleDb操作Excel和數(shù)據(jù)庫(kù)的策略

    在C#編程中,使用OleDb可以方便地實(shí)現(xiàn)對(duì)Excel文件和數(shù)據(jù)庫(kù)的操作,本文探討了在C#中使用OleDb技術(shù)操作Excel和數(shù)據(jù)庫(kù)的策略,文章詳述了OleDb的定義、配置環(huán)境的步驟,并通過實(shí)際代碼示例演示了如何高效讀寫Excel文件和交互數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2024-05-05

最新評(píng)論

南乐县| 江门市| 自治县| 合肥市| 襄樊市| 秭归县| 肥西县| 社会| 永年县| 台中县| 新野县| 山阴县| 泸定县| 临漳县| 石门县| 报价| 苏尼特右旗| 三门峡市| 鄂托克前旗| 小金县| 大宁县| 彰武县| 双城市| 江津市| 丹寨县| 遂溪县| 长丰县| 石泉县| 陆丰市| 永嘉县| 赞皇县| 西贡区| 梁河县| 湖州市| 姜堰市| 句容市| 田东县| 宜黄县| 基隆市| 临邑县| 邹平县|