我是靠谱客的博主 温婉毛巾,这篇文章主要介绍c# 识别图片格式的方法,现在分享给大家,希望可以做个参考。

问题窥探

在有些时候,我们拿到了一张图片。这张图片的格式是 JPG 还是 PNG?是 BMP 还是只有一帧的 GIF?虽然在大部分情况下,你确实可以把一张 PNG 格式的图片保存成 JPG,在电脑上也能双击打开看。但如果你要写一些程序来处理图片,那么图片的格式就至关重要了。例如 GIF 里面有帧信息,而JPG 里面却没有,PNG 图片有通道信息,而 JPG 也没有。如果你下载了一张JPG 的图片,却尝试用处理 GIF 的方式去提取帧信息,显然就会导致程序报错。

解决方案

1.通过文件的扩展名来判断

这种方法比较简单, 

但若是有人故意改下文件扩展名,这种方法就不起作用了。

2.通过C#自身提供的方法来进行判断(判断某种确定的图片类型)

复制代码
1
2
3
4
5
6
bool isJPG = false; System.Drawing.Image img = System.Drawing.Image.FromFile(filesName); if(img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg)) { isJPG = true; }

3.通过读取文件内容来判断

所有的图片文件都包括:文件识别头和图象数据两部分,
其中文件识别头用来让计算机判断是哪种文件 格式。

  • JPEG

所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。依此便可判别是否是JPEG文件。

  • BMP

BMP文件以字符串“0x4D42”开头

  • GIF

gif头六个是 GIF89a或 GIF87a

4.读取文件内容转换成二进制流识别,比如.jpg的是255216

示例代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
public static FileExtension CheckTextFile(string fileName)         {             FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);             System.IO.BinaryReader br = new System.IO.BinaryReader(fs);             string fileType = string.Empty; ;             try             {                 byte data = br.ReadByte();                 fileType += data.ToString();                 data = br.ReadByte();                 fileType += data.ToString();                 FileExtension extension;                 try                 {                     extension = (FileExtension)Enum.Parse(typeof(FileExtension), fileType);                 }                 catch                 {                     extension=FileExtension.VALIDFILE                 }                 return extension;             }             catch (Exception ex)             {                 throw ex;             }             finally             {                 if (fs != null)                 {                     fs.Close();                     br.Close();                 }             }         }     }     public enum FileExtension     {         JPG = 255216,         GIF = 7173,         PNG = 13780,         SWF = 6787,         RAR = 8297,         ZIP = 8075,         _7Z = 55122,         VALIDFILE=9999999         // 255216 jpg;          // 7173 gif;          // 6677 bmp,          // 13780 png;          // 6787 swf          // 7790 exe dll,          // 8297 rar          // 8075 zip          // 55122 7z          // 6063 xml          // 6033 html          // 239187 aspx          // 117115 cs          // 119105 js          // 102100 txt          // 255254 sql       } 

以上就是c# 识别图片格式的方法的详细内容,更多关于c# 识别图片格式的资料请关注靠谱客其它相关文章!

最后

以上就是温婉毛巾最近收集整理的关于c# 识别图片格式的方法的全部内容,更多相关c#内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(167)

评论列表共有 0 条评论

立即
投稿
返回
顶部