c# 识别图片格式的方法

问题窥探

在有些时候,我们拿到了一张图片。这张图片的格式是 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# 识别图片格式的资料请关注我们其它相关文章!

(0)

相关推荐

  • C# 图片格式转换的实例代码

    在日常工作中,经常需要不同格式的图片,有时还需要进行图片格式的相互转换,本文以一个简单的小例子,简述图片格式转换的常见方法,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点 OpenFileDialog 打开文件对话框,用于选择文件,可以设置过滤后缀. FolderBrowserDialog 文件夹选择对话框,用于选择一个文件夹,可以新增. ImageFormat 图片类型枚举. Bitmap 位图对象,包含对应的属性和内容. Stream 流对象的基类. FlowLayoutPanel

  • c#实现识别图片上的验证码数字

    public void imgdo(Bitmap img) { //去色 Bitmap btp = img; Color c = new Color(); int rr, gg, bb; for (int i = 0; i < btp.Width; i++) { for (int j = 0; j < btp.Height; j++) { //取图片当前的像素点 c = btp.GetPixel(i, j); rr = c.R; gg = c.G; bb = c.B; //改变颜色 if (r

  • C#二维码图片识别代码

    本文实例为大家分享了C#二维码图片识别的具体代码,供大家参考,具体内容如下 怎么用NuGet和怎么配置log4net就不介绍了,直接上代码(Visual Studio 2015 下的项目,用的.NET Framework 4.5.2). 其中QRDecodeConsoleApp.exe.config文件里配置图片路劲(默认为D:\我的文档\Pictures\二维码).图片类型(默认为*.png). 也支持在命令行里执行,exe后接图片路劲参数. 需要直接用的朋友,确认完QRDecodeDemo\

  • C#识别出图片里的数字和字母

    一个图片识别小工具,原先主要是识别以前公司的软件注册码截图里的数字和字母(每次要一个一个框复制出来粘贴到注册器里,很麻烦!),因为注册码出现的字母和数字基本就那几个,所以识别库的范围设定的比较少. 原理和算法在代码中做了详细说明,功能存在很大的局限性,但我的想法是把这个思路和实现的办法共享出来. 源码下载地址: http://git.oschina.net/bobo2cj/iamge2text /* * 开发思路:图片灰度处理,二进制,然后和图片中的字二进制库精确对比 * * 获取字库:通过下面

  • C#简易图片格式转换器实现方法

    本文实例讲述了C#简易图片格式转换器实现方法.分享给大家供大家参考,具体如下: 在窗体上放一个picturebox,menustrip.在菜单上键入两个按钮,分别为"文件","格式".在"文件"下创建一个子菜单"打开",name为menuOpen,在"格式"下创建一个子菜单"转换格式",name为menuConvert. using System; using System.Collec

  • C#获取某路径文件夹中全部图片或其它指定格式的文件名的实例方法

    1.编写获取文件名(全路径)子函数 /////param ///path:文件夹路径 ///suffix:后缀格式, 如bmp,txt ///fileList:文件名存放 ///isSubcatalog:true遍历子文件夹,否则不遍历 void getFiles(string path, string suffix, ref List<string> fileList, bool isSubcatalog) { string filename; DirectoryInfo dir = new

  • C# 给站点指定位置的某种格式的图片添加水印

    复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; usi

  • C#发送内置图片html格式邮件的方法

    本文实例讲述了C#发送内置图片html格式邮件的方法.分享给大家供大家参考.具体如下: 下面的代码用于发送html格式的邮件,并且可以将图片附加到邮件一起发出 MailMessage m = new MailMessage(); m.From = new MailAddress("ir@jb51.net", "Raja Item"); m.To.Add(new MailAddress("su@jb51.net", "Sekaran Um

  • c#获取图片正确格式的方法

    大部分时候,我们可以通过从图片路径中截取扩展名的方式拿到一个图片的格式: var ext = Path.GetExtension("C:\\coderbusy.jpg"); Console.WriteLine(ext); 这将会显示出: jpg 但是如果我们拿到的只是数据流或者是路径名不被信任的场景(比如扩展名是随机字符串的临时文件)那么我们可能就需要从文件内容反推文件格式. 幸运的是:.NET 为我们提供了 Image 类型用于表示一个图片.Image 类型包含一个类型为 Image

  • c# 识别图片格式的方法

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

  • Python用imghdr模块识别图片格式实例解析

    imghdr模块 功能描述:imghdr模块用于识别图片的格式.它通过检测文件的前几个字节,从而判断图片的格式. 唯一一个API imghdr.what(file, h=None) 第一个参数file可以是用rb模式打开的file对象或者表示路径的字符串和PathLike对象.h参数是一段字节串.函数返回表示图片格式的字符串. >>> import imghdr >>> imghdr.what('test.jpg') 'jpeg' 具体的返回值和描述如下: 返回值 描述

  • Nodejs 识别图片类型的方法

    通过切文件名称后缀来获得图片格式的方式是不准确的,因为文件后缀是可以被强行更改的,这样一个.gif 图片也可以被保存成.jpg, 那么在 Node 上我们如何做文件类型的校验呢 通过文件头标识判断图片格式 其实很简单,每个图片文件都有文件头标识,各种格式的图片的文件头标识都是不一样,所以可以通过判断文件头的标识来识别图片格式. 通过在网上找资料,汇总了如下的 图片文件头标识: 1.JPEG/JPG - 文件头标识 (2 bytes): ff, d8 文件结束标识 (2 bytes): ff, d

  • codeigniter上传图片不能正确识别图片类型问题解决方法

    在用 codeigniter 的上传类上传图片的时候,明明是 jpg 格式图片,但是 ci 始终识别成 application/octet-stream 类型,从而导致上传失败,搜集了下资料,解决方法如下: 在 php.ini 中开启 fileinfo 扩展来获取正确的类型: 复制代码 代码如下: //windows extension = php_fileinfo.dll //linux extension = fileinfo.so 注:关于fileinfo PHP官方推荐mime_cont

  • Nodejs中使用phantom将html转为pdf或图片格式的方法

    最近在项目中遇到需要把html页面转换为pdf的需求,并且转换成的pdf文件要保留原有html的样式和图片.也就是说,html页面的图片.表格.样式等都需要完整的保存下来. 最初找到三种方法来实现这个需求,这三种方法都只是粗浅的看了使用方法,从而找出适合这个需求的方案: html-pdf 模块 wkhtmltopdf 工具 phantom 模块 最终使用了phantom模块,也达到了预期效果.现在简单的记录三种方式的使用方法,以及三者之间主要的不同之处. 1.html-pdf github:ht

  • 让网站Windows服务器之iis支持Webp图片格式的方法(宝塔)

    目录 一.Webp报错 二.造成Webp报错的原因 三.解决网站Webp文件打开404 我们可能因为一些特殊需求网站服务器使用 Windows Server 系统来跑,没有采用Linux环境.而Webp格式的图像越来越多的网站采用,因为压缩效率更为出色,在同等质量下体积要比JPEG格式的小很多.这时你可能会发现上传到网站的Webp图像文件浏览器无法打开,报404错误,今天我们简单几个步骤轻松解决这个问题. 一.Webp报错 当你的 Windows Server 服务器使用的是 IIS 信息服务管

  • Python用sndhdr模块识别音频格式详解

    本文主要介绍了Python编程中,用sndhdr模块识别音频格式的相关内容,具体如下. sndhdr模块 功能描述:sndhdr模块提供检测音频类型的接口. 唯一一个API sndhdr模块提供了sndhdr.what(filename)和sndhdr.whathdr(filename)两个函数.但实际上它们的功能是一样的.(不知道多写一个的意义何在,what函数在内部调用了whathdr函数并把数据完完整整地返回) 在之前的版本,whathdr函数返回元组类型的数据,在Python3.5版本之

  • 使用python将图片格式转换为ico格式的示例

    因为python打包的时候需要用到ico图片格式,网上看好的图片又没有ico,于是自己寻找了一下python转换图片格式的方法,彻底解决这个问题,以后就可以自己轻松实现转化了. 代码如下: """ Author:Robin·QI Notes:将图片转换为ico格式 """ # PythonMargick包可以到Unofficial Windows Binaries for Python Extension Packages下载 import Py

  • python实现通过pil模块对图片格式进行转换的方法

    本文实例讲述了python实现通过pil模块对图片格式进行转换的方法.分享给大家供大家参考.具体分析如下: python的pil模块相当的智能,如果你需要对图片格式进行转换,比如jpg转转成tif,jpg转换成gif,png转换成jpg只需要在保存文件时指定正确的图片扩展名即可. 代码如下: import Image im = Image.open('test.jpg') im.save('test.tiff') # or 'test.tif' 希望本文所述对大家的Python程序设计有所帮助.

随机推荐