欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

c# 识别图片格式的方法

时间:2021-04-01 08:17:39|栏目:.NET代码|点击:

问题窥探

在有些时候,我们拿到了一张图片。这张图片的格式是 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  

    } 

上一篇:Asp.net 页面调用javascript变量的值

栏    目:.NET代码

下一篇:C#使用正则表达式实现首字母转大写的方法

本文标题:c# 识别图片格式的方法

本文地址:http://www.codeinn.net/misctech/92200.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有