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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xftp怎么有root权限_许多人都不懂的Linux系统里的特殊权限!!你真的了解嘛?...

有的朋友一听Linux系统文件还有特殊权限,那头就要爆炸了,那还是接着看看/tmp目录和/usr/bin/passwd文件,怎么回事啊!!!看见没有啊!不是应该只有rwx 吗?还有其他的特殊权限( s 跟t )啊…

python中abc属于字符串吗_在Python中,字符串s = 'abc',那么执行表达式s+'d'之后,s的打印结果是( )。...

【单选题】当知道条件为真,想要程序无限执行直到人为停止的话,可以需要下列哪个选项?【单选题】Python3解释器执行 for i,v in enumerate([0,1,2],2):print(i,v)和 for i,v in enumerate([0,1,2]):print(i,v)的结果,你认为对的选项是( )。【单选题】Python3解释器执行AB2C3D.l…

菜单保卫战

前几天和老公去龙之梦,路过米爱粥,只见店员们齐刷刷站成两排,店长在前面训话。 只听店长非常严肃的说:“我们的菜单是很贵的,大家一定要注意。不光是迎宾的事情,也是你们每个人的事情。要经常注意一下&…

我是怎样爬下6万共享单车数据并进行分析的(附代码)

共享经济的浪潮席卷着各行各业,而出行行业是这股大潮中的主要分支。如今,在城市中随处可见共享单车的身影,给人们的生活出行带来了便利。相信大家总会遇到这样的窘境,在APP中能看到很多单车,但走到那里的时候&#xff…

使用 Tye 辅助开发 k8s 应用竟如此简单(三)

使用 Tye 辅助开发 k8s 应用竟如此简单(一)使用 Tye 辅助开发 k8s 应用竟如此简单(二)续上篇,这篇我们来进一步探索 Tye 更多的使用方法。本篇我们来了解一下如何在 Tye 中如何对数据库进行链接。Newbe.Claptrap 是一个…

mybatis collection标签_一对多的关系,在MyBatis中如何映射?

# 使用collection标签需求:根据用户id查询用户信息的同时获取用户拥有的角色,一个用户可以拥有1个或多个角色。一般情况下,不建议直接修改数据库表对应的实体类。所以这里我们延用之前博客中新建的类SysUserExtend,并添加如下代码…

上传文件白名单_十大常见web漏洞——文件上传漏洞

漏洞介绍在我们浏览网页时,文件上传是非常常见的,比如我们会上传头像、附件、视频等文件,文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型…

Java编程比C编程好吗?《精通Unix下C语言与项目实践》读书笔记(15)

《精通Unix下C语言编程与项目实践》读书笔记(new)文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国。一、二、三、四职场规划:一些杂七杂八的职场感悟吧。不值钱的软件人才 精力充沛与事业…

C# Lambda表达式详解,及Lambda表达式树的创建

每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦…

将span隐藏的函数_分类汇总函数Subtotal和Aggregate应用技巧解读

在实际的数据统计分析中,经常会遇到很多复杂的因素,例如,对隐藏的行或计算结果返回错误类型的值不予统计等等……如果此时还用常规的Sum系列、Count系列、Average系列等函数去做数据统计分析,将会是难上加难或者根本无法完成。此时…

粉丝回馈 | 用30天换来了这辈子独一无二的纪念

不知不觉2017年已经临近尾声了,超模君和小木决定趁年末,要给粉丝们一份用心的回馈,感谢这一年来大家对我们的支持与厚爱~ 经过几天几夜的苦思冥想、辗转反侧。。。超模君和小木最终确定了一份超模定制版纪念品,定制版!…

地图统计_连吃七八个都不够!太仓不完整包子统计地图来了!

在上班的路上总会顺道买上几个包子,不止是因为方便美味,圆鼓鼓的外型就像个太阳一样能带来满满的能量。这次叔打卡了8家高人气包子店,不知道有没有你经常光顾的那家呢?留言区还抽3位吃货送现金红包哦!长春路包子铺?地…

mysql 启动、重启、kill脚本

mysql 启动、重启、kill脚本 vi mysql#!/bin/sh mysql_port3306 mysql_username"root" mysql_password"" start_mysql() { printf "Starting MySQL...\n" /bin/sh /data1/mysql/bin/mysqld_safe --defa…

使用 Tye 辅助开发 k8s 应用竟如此简单(四)

使用 Tye 辅助开发 k8s 应用竟如此简单(一)使用 Tye 辅助开发 k8s 应用竟如此简单(二)使用 Tye 辅助开发 k8s 应用竟如此简单(三)续上篇,这篇我们来进一步探索 Tye 更多的使用方法。本篇我们来了…

炸锅了!Google称2029年人类开始实现永生不死!疾病,衰老,痛苦将彻底消失!?

这个世界上最公平的,恐怕就是生老病死了。即使一个人一生的成就再大,财富再多,最终都敌不过自然规律,走向死亡。 然而 谷歌的首席未来科学家Ray kurzweil 却发布了一个惊天消息: 到了2029年, 人类将开始正…

python 中文编码差异_Python 编码为什么那么蛋疼?

平常还觉得编码问题一般能水过去,到爬虫这真是"不信抬头看,苍天饶过谁"...其实,Python2和Python3中对于编码已经发生了很大的改变(但其实是更方便了),我们一个个来讨论:Python21.在Python2中默认编码为ASCII…

mysql数据库连接_mysql数据库连接池配置教程

在与数据库进行连接的时候,会牵扯到数据库连接池的配置,本文将详细介绍mysql数据库连接池配置,需要了解跟多的朋友可以参考下第一步:写javabeanpackage withouttears.jdbc.db;import java.util.HashMap;import java.sql.*;//JNDI有两个核心接口Context和…

2006年4月全国计算机等级考试二级Java语言程序设计

(考试时间90分钟,满分100分) 一、选择题((1)~(35)每小题2分,共70分) 下列各题A)、B)、C)、D)四个选项中&am…

asp.net web api中的版本管理

应用是演进的,通常我们用版本号来管理。api也是演进的,这篇博文就说说asp.net web api演进时的版本管理。asp.net web api的版本管理是通过微软的一个包来实现的。Install-Package Microsoft.AspNetCore.Mvc.Versioning通过url参数: api/order/api-versi…