c#判断图形文件(GIF,JPG,PNG)的图片格式的方法

  1.  通过文件的扩展名来判断。这种方法c#判断图形文件(GIF,JPG,PNG)的图片格式的方法比较简单,
     但若是有人故意改下文件扩展名,这种方法就不起作用了。  

 2. 通过C#自身提供的方法来进行判断(判断某种确定的 图片 c#判断图形文件(GIF,JPG,PNG)的图片格式的方法类型)。
    EX:
     bool isJPG = false;
     System.Drawing.Image img = System.Drawing.Image.FromFile(filesName);
     if   ( img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg) )
      {
              isJPG = true;
     }
 
3.通过读取文件内容来判断。
    所有的图片文件都包括:文件识别头和图象数据两部分,
    其中文件识别头用来让 计算机 c#判断图形文件(GIF,JPG,PNG)的图片格式的方法判断是哪种文件 格式。
    JPEG        所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。依此便可判别是否是JPEG文件。
    BMP
    BMP文件以字符串“0x4D42”开头
    GIF
     gif头六个是 GIF89a或 GIF87a  

大部分都是通过将文件读成二进制流,取前两个字节判断,比如.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
   

 经过测试,可以很好的判断.jpg、.gif格式的文件.

然而对于.txt文件却不是102100,每个.txt返回的值也不一样。显然,这个方法不能满足要求。

/// <summary>
       
/// Checks the file is textfile or not.
       
/// </summary>
       
/// <param name="fileName">Name of the file.</param>
       
/// <returns></returns>
        public static bool CheckIsTextFile(string fileName)
        {
            FileStream fs
= new FileStream(fileName, FileMode.Open, FileAccess.Read);
           
bool isTextFile=true;
           
try
            {
               
int i = 0;
               
int length = (int)fs.Length;
               
byte data;
               
while (i < length && isTextFile)
                {
                    data
= (byte)fs.ReadByte();
                    isTextFile
= (data != 0);
                    i
++;
                }
               
return isTextFile;
            }
           
catch (Exception ex)
            {
               
throw ex;
            }
           
finally
            {
               
if (fs != null)
                {
                    fs.Close();
                }
            }
        }

测试

bool isTextFile = CheckIsTextFile(this.openFile.FileName);
               
if (isTextFile)
               
{
                    Label1.Text=openFile.FileName + "是文本文件";
               
}
               
else
               
{
                    Label1.Text=openFile.FileName + "不是文本文件!";
               
}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值