关于.net:确定图片的文件类型
Determine file type of an image我正在从服务中下载一些图像,这些服务并不总是包含内容类型,并且不提供我正在下载的文件的扩展名(哦,不要问)。 确定.NET中图像格式的最佳方法是什么? 正在读取这些下载的图像的应用程序需要具有适当的文件扩展名,否则所有地狱都可能会崩溃。 一种可能更简单的方法是使用Image.FromFile()然后使用RawFormat属性,因为它已经知道最常见格式的标头中的魔术位,如下所示:
您可以在不参考System.Drawing以及不必要创建对象Image的情况下使用以下代码。同样,即使没有流和System.IO的引用,您也可以使用Alex解决方案。
所有图像格式均将其初始字节设置为特定值:
搜索" jpg文件格式",将jpg替换为您需要识别的其他文件格式。 正如Garth建议的那样,有一个数据库可以显示许多文件的文件类型。如果您必须检测许多不同的文件类型,则值得一看以查找所需的信息。如果确实需要扩展它以涵盖许多文件类型,请查看相关的文件命令,该命令实现了引擎以正确使用数据库(对于许多文件格式而言,这并非易事,并且几乎是一个统计过程) -亚当 亚当指的是正确的方向。
如果要查找几乎所有文件的方法,请查看UNIX,Linux或Mac OS X计算机上
您可以根据在数据库中看到的内容编写自己的检测代码,也可以使用预打包的库(例如python-magic),也可以(如果确实喜欢冒险的话)实施 如果您没有方便的UNIX计算机,则数据库如下所示:
祝好运! 有程序确定图像MIMETYPE的方法。 有类System.Drawing.Imaging.ImageCodecInfo。
此类具有MimeType和FormatID属性。它还有一个GetImageEncoders方法,该方法返回所有图像编码器的集合。 System.Drawing.Image类具有类型为System.Drawing.Imaging.ImageFormat的RawFormat属性,其属性Guid等同于System.Drawing.Imaging.ImageCodecInfo类的属性FormatID,这是从字典中获取MIMETYPE的关键。 例: 创建mime类型字典的静态方法
采用:
尝试将流加载到System.IO.BinaryReader中。 然后,您需要参考所需的每种图像格式的规范,并逐字节加载标头以与规范进行比较。例如,这是PNG规范 补充:PNG的实际文件结构。 |
相关内容
-
win10多任务按键怎么设置在底部详细方法
win10多任务按键怎么设置在底部详细方法,按键,任务,在使用电脑...
-
电脑系统城|电脑系统下载 win7
电脑系统城|电脑系统下载 win7,电脑系统城,不少朋友在使用电脑...
-
电脑报2014合订本光盘|电脑报2020年合订本pdf下
电脑报2014合订本光盘|电脑报2020年合订本pdf下载,,1. 电脑报2...
-
电脑服务全部禁用了怎么恢复|电脑服务全部被禁
电脑服务全部禁用了怎么恢复|电脑服务全部被禁用怎么办,,电脑...
-
设置里程碑|设置里程碑的方法有哪些
设置里程碑|设置里程碑的方法有哪些,,1. 设置里程碑的方法有哪...
-
Outlook的PST文件损坏的修复方法
Outlook的PST文件损坏的修复方法,文件, ...
-
三星空调服务电话24小时|三星空调服务电话24小
三星空调服务电话24小时|三星空调服务电话24小时昆山,,三星空...
-
手提电脑手写怎么设置|电脑手写设置方法
手提电脑手写怎么设置|电脑手写设置方法,,电脑手写设置方法看...
-
打印机常见故障排除方法HP5000打印机为例
打印机常见故障排除方法HP5000打印机为例,,HP 50005100打印机...
-
金蝶易记账售后服务电话
金蝶易记账售后服务电话,,1.人工客服电话是多少075客服专线075...
-
手机版wps里如何给字加拼音|wps在文字上加拼音
手机版wps里如何给字加拼音|wps在文字上加拼音的方法wps怎么...
-
2021电脑系统在哪下载|2021年电脑最新系统
2021电脑系统在哪下载|2021年电脑最新系统,,1. 2021年电脑最新...
-
笔记本摄像头驱动在哪里下载 罗技摄像头驱动安
笔记本摄像头驱动在哪里下载 罗技摄像头驱动安装在电脑哪里,...
-
小编辑器教你减少计算机网络流量的最简单方法
小编辑器教你减少计算机网络流量的最简单方法,,核心提示:教你如...
-
Android手机模拟器的安装方法_模拟器安装教程在
Android手机模拟器的安装方法_模拟器安装教程在计算机技能,,核...