图片头文件信息解析
2016-01-12 13:25
232 查看
今天发现获取图片的宽高,并不需要把图片完全读完之后再来获取,而只需要读取文件头文件,几十个字节便可以读出文件的宽高。
图片的文件头部存储有该图片相关信息,可以从中读取相应字段,得到尺寸、大小、格式等信息。由于无需载入整张图片,故而速度较快。当图片较大时,优势更加明显。
现在把今天发现的东西总结一下,所有数据都是用的QQ截图。特征码的位置可能和实际不同,目前发现jpg的宽高特征码不确定。如果以后发现特征码规律会回来修改这篇博客。
所有数据都是QQ截图出来的,并且做了多张比较,以下例子只是其中之一。
可以看出width低位:0x12,高位:0x13。height低位:0x16,高位0x17。
width低位:0x13,高位0x12。height低位:0x17,高位0x16。和bmp刚好相反
width低位:0x07,高位0x06。height低位:0x09,高位0x08。
width低位:0xA5,高位0xA6。height低位:0xA3,高位0xA4。
再次强调,以上均为QQ截图的格式,以上特征码可能和实际图片不一致,已知jpg格式的图片特征码不一致,在使用特征码时,最好先检查一下是否一致。
-文件头标识 (2 bytes) 42 4D
2.PNG
- 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
3.GIF
- 文件头标识 (6 bytes) 47 49 46 38 39(37) 61
4.JPEG/JPG
- 文件头标识 (2 bytes): FF, D8 (SOI) (JPEG 文件标识)
- 文件结束标识 (2 bytes): FF, D9 (EOI)
图片的文件头部存储有该图片相关信息,可以从中读取相应字段,得到尺寸、大小、格式等信息。由于无需载入整张图片,故而速度较快。当图片较大时,优势更加明显。
现在把今天发现的东西总结一下,所有数据都是用的QQ截图。特征码的位置可能和实际不同,目前发现jpg的宽高特征码不确定。如果以后发现特征码规律会回来修改这篇博客。
所有数据都是QQ截图出来的,并且做了多张比较,以下例子只是其中之一。
bmp(771*434):
可以看出width低位:0x12,高位:0x13。height低位:0x16,高位0x17。
PNG(906*440)
width低位:0x13,高位0x12。height低位:0x17,高位0x16。和bmp刚好相反
GIF(976*402)
width低位:0x07,高位0x06。height低位:0x09,高位0x08。
JPG(800*525)
width低位:0xA5,高位0xA6。height低位:0xA3,高位0xA4。
再次强调,以上均为QQ截图的格式,以上特征码可能和实际图片不一致,已知jpg格式的图片特征码不一致,在使用特征码时,最好先检查一下是否一致。
补充:以上4种图片类型的特征码
1.BMP-文件头标识 (2 bytes) 42 4D
2.PNG
- 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
3.GIF
- 文件头标识 (6 bytes) 47 49 46 38 39(37) 61
4.JPEG/JPG
- 文件头标识 (2 bytes): FF, D8 (SOI) (JPEG 文件标识)
- 文件结束标识 (2 bytes): FF, D9 (EOI)
相关文章推荐
- C语言-WIN32导学
- C语言-WIN32-IOCP
- oracle统计字符串中某个字符出现的次数
- simple mail example for smtp debug
- C语言-SOCKET
- ios开发之 APP上架要填写什么?有什么要注意?
- log4j 配置例子
- Kaggle Titanic Competition-第四部分
- 1833: [ZJOI2010]count 数字计数
- C语言-mysql
- C语言-LINUX线程
- ASP.NET Web API:安全验证之使用摘要认证(digest authentication)
- STL_算法_查找算法(find_first_of、find_last_of)
- Android SDK 和 Eclipse ADT 离线安装 教程
- 介绍-她人博客
- junit单元测试@Test报错的解决办法
- Android Serializable和Parcelable的区别和用法
- 在Android中来实现视频的播放
- 常用的软件
- UIScrollView入门