请问关于c的具体应用场景有哪些?

2026-04-27 14:021阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计699个文字,预计阅读时间需要3分钟。

请问关于c的具体应用场景有哪些?

问题探究:有时我们拿到了一张图片。这张图片的格式是+JPG还是+PNG?是+BMP还是只有一帧的+GIF?当然在大部情况下,你确实可以把一张PNG格式的图片保存成JPG格式,在电脑上也能使用。

问题窥探

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

解决方案

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

这种方法比较简单,

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

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

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

示例代码

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的具体应用场景有哪些?

本文共计699个文字,预计阅读时间需要3分钟。

请问关于c的具体应用场景有哪些?

问题探究:有时我们拿到了一张图片。这张图片的格式是+JPG还是+PNG?是+BMP还是只有一帧的+GIF?当然在大部情况下,你确实可以把一张PNG格式的图片保存成JPG格式,在电脑上也能使用。

问题窥探

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

解决方案

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

这种方法比较简单,

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

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

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

示例代码

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的具体应用场景有哪些?