读文件头判断图片类型!
来源:互联网 发布:评论点赞软件 编辑:程序博客网 时间:2024/06/09 17:33
Opencv加载一幅图片的时候只看图片实际的图片格式,与后缀名无关;所以如果一幅图片实际是Opencv支持的图片格式,即使后缀名是txt也没关系。
但如果某个文件打着jpg的后缀名,但实际却是其他乱七八糟的格式,那么如果不加判断的cvLoadImage一幅“图片”,可能就会出错。出错的原因有:1.文件虽然是jpg等图片后缀,但实际不是图片,或者不是Opencv支持的图片----如gif;2.图片不完整(这种情况在读入之前是无法判断的,所以只好用try catch来解决了)。所以在load一幅图片之前最好添加一个判断操作。
.Net里有现成的类可以进行这个判断,如:
这里首先由文件路径创建一个Image类,然后判断其实际类型。大部分情况下这是可行的,但如果一个网页文件被修改了后缀名为.jpg,由它来创建一个Image类就会报错!
所以这里我自己写了一个读文件头几个自己来判断是否是图片的函数。首先介绍一下图片文件头表示图片类型的部分:
1.JPEG
- 文件头标识 (2 bytes): 0xff, 0xd8 (SOI) (JPEG 文件标识)
- 文件结束标识 (2 bytes): 0xff, 0xd9 (EOI)
2.TGA
- 未压缩的前5字节 00 00 02 00 00
- RLE压缩的前5字节 00 00 10 00 00
3.PNG
- 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
4.GIF
- 文件头标识 (6 bytes) 47 49 46 38 39(37) 61
G I F 8 9 (7) a
5.BMP
- 文件头标识 (2 bytes) 42 4D
B M
6.PCX
- 文件头标识 (1 bytes) 0A
7.TIFF
- 文件头标识 (2 bytes) 4D 4D 或 49 49
8.ICO
- 文件头标识 (8 bytes) 00 00 01 00 01 00 20 20
9.CUR
- 文件头标识 (8 bytes) 00 00 02 00 01 00 20 20
10.IFF
- 文件头标识 (4 bytes) 46 4F 52 4D
F O R M
11.ANI
- 文件头标识 (4 bytes) 52 49 46 46
R I F F
对于图片的文件头,大家可以用winhex打开一幅图片就可以看到前面的几个字节。下面是读文件头8个字节然后判断图片类型的函数,因为这里我只需要jpeg/bmp/png格式的,所以其他格式的即使是图片也归到nothing里面。
- 读文件头判断图片类型!
- 读文件头判断图片类型
- 读文件头判断图片类型
- 读文件头判断图片类型
- 读文件头判断图片类型!
- 读文件头判断图片类型
- 通过图片文件头判断图片类型
- 通过文件头判断图片类型
- 根据文件头判断图片类型
- 根据文件头判断图片类型
- 根据文件头来判断图片的类型
- 143.根据文件头判断类型
- 通过以二进制方式读取文件 判断文件头得到图片类型 ,上面通过拓展名有缺陷。
- php通过获取头信息判断图片类型
- php通过获取头信息判断图片类型
- IOS学习笔记 - NSFileManager,沙盒路径,NSString类路径处理,NSCache,读取文件头判断图片类型
- 根据文件头信息判断文件真实类型(AS3)
- Python通过文件头来判断文件的真实类型
- W
- 简单叙述钩子实现
- js 实现repeater 中记录的全选,反选
- 女人不该让男人太累
- 0112-0115
- 读文件头判断图片类型!
- Oracle 索引组织表(IOT)
- 【滚动更新】Google退出中国后续报道之二
- 更新..
- 人抗压的九大法宝
- 封网和Google的离开
- 一个图论中的概念:Betweenness Centrality
- C#添加或取消文件(夹)从上级继承权限
- Convert DataView to DataTable