首页 > 编程知识 正文

片特征码提取,片特征码提取软件

时间:2023-05-03 22:52:20 阅读:212279 作者:4935

 今天发现获取图片的宽高,并不需要把图片完全读完之后再来获取,而只需要读取文件头文件,几十个字节便可以读出文件的宽高。

  图片的文件头部存储有该图片相关信息,可以从中读取相应字段,得到尺寸、大小、格式等信息。由于无需载入整张图片,故而速度较快。当图片较大时,优势更加明显。

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低位:0xA6,高位0xA5。height低位:0xA4,高位0xA3。

 

补充:以上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) 

 

jpg格式分析

偏移

长度

内容

块的名称

说明

0

2 byte

0xFFD8

(Start of Image,SOI)

图像开始

2

2 byte

0xFFE0

APP0(JFIF application segment)

JFIF应用数据块

4

2 bytes

 

length of APP0 block

APP0块的长度

6

5 bytes

 

"JFIF"+"0"

识别APP0标记

11

1 byte

 

<Major version>

主要版本号(如版本1.02中的1)

12

1 byte

 

<Minor version>

次要版本号(如版本1.02中的02)

13

1 byte

 

<Units for the X
and Y densities>

X和Y的密度单位

units=0:无单位

units=1:点数/英寸

units=2:点数/厘米

14

2 bytes

 

<Xdensity>

水平方向像素密度

16

2 bytes

 

<Ydensity>

垂直方向像素密度

18

1 byte

 

<Xthumbnail>

缩略图水平像素数目

19

1 byte

 

<Ythumbnail>

缩略图垂直像素数目

 

3n

 

< Thumbnail RGB bitmap>

缩略RGB位图(n为缩略图的像素数)

   

Optional JFIF extension APP0 marker segment(s)

任选的JFIF扩展APP0标记段

 

……

 

……

  

2 byte

0xFFD9

(EOI) end-of-file

图像文件结束标记

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。