首页 / 知识
关于.net:确定图片的文件类型
2023-04-14 22:30:00

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的实际文件结构。 |
最新内容
相关内容
linux命令暂停下载?
linux命令暂停下载?,系统,代码,暂停,第一,服务,管理,命令,进程,程序,接线,linux下nginx停止命令首先,连接相应linux主机,进入到linux命令行状态linux服务器分区命令?
linux服务器分区命令?,系统,管理,信息,设备,时间,命令,基础,首次,平均,情况,linux系统格式化分区用哪个命令Linux的磁盘格式化命令是“mkfs”,linux重新服务命令?
linux重新服务命令?,服务,系统,网络,标准,工作,设备,命令,名称,信息,网络服务,linux重启命令Linux的五个重启命令为:shutdown、poweroff、initlinux命令下载jdk?
linux命令下载jdk?,官网,系统,地址,工作,工具,服务,管理,环境,网上,地方,怎样在Linux系统中下载和安装OpenJDK包手动安装jdk,首先需要下载jdk,记linux中的下载命令行?
linux中的下载命令行?,软件,系统,网络,电脑,名称,密码,官网,位置,服务,代理,linux命令行下的ftp多文件下载和目录下载查看是否安装vsftpd,如果linux命令行大全下载?
linux命令行大全下载?,系统,地址,工作,信息,管理,技术,命令,名家,评论,数据,《Linux命令行大全》pdf下载在线阅读,求百度网盘云资源1、本书是linux命令下载jdk?
linux命令下载jdk?,官网,系统,地址,工作,工具,服务,管理,环境,网上,地方,怎样在Linux系统中下载和安装OpenJDK包手动安装jdk,首先需要下载jdk,记linux服务器基本命令?
linux服务器基本命令?,地址,系统,设备,网络,工作,标准,信息,电脑,命令,密码,linux如何查看ip地址命令(linux如何查看ip地址)1、目录方法1:使用Ulinux服务器下载命令?
linux服务器下载命令?,服务,密码,系统,档案,工具,网络,公共,百度,地址,认证,linux下lftp连接ftp服务器上传下载命令连接ftp服务器 格式:ftp [holinux命令怎么停服务?
linux命令怎么停服务?,服务,系统,状态,代码,跨行,软件,情况,第一,名称,命令,linux下nginx停止命令首先,连接相应linux主机,进入到linux命令行状linux服务端退出命令?
linux服务端退出命令?,档案,命令,环境,异常,标准,网络,模式,终端,编辑,文件,linux的telnet退出命令1、Telnet测试一般使用的是TelnetIP(主机)linux中启动服务命令?
linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,linux如何启动服务1、具体步骤如下:首先,我们需要修改mysql的配置文