亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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ù)流或者是路徑名不被信任的場景(比如擴(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 ,之后查表給出對應(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#獲取圖片格式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論