圖片頭文件信息解析

  今天發現獲取圖片的寬高,並不需要把圖片完全讀完之後再來獲取,而只需要讀取文件頭文件,幾十個字節便可以讀出文件的寬高。

  圖片的文件頭部存儲有該圖片相關信息,可以從中讀取相應字段,得到尺寸、大小、格式等信息。由於無需載入整張圖片,故而速度較快。當圖片較大時,優勢更加明顯。

  現在把今天發現的東西總結一下,所有數據都是用的QQ截圖。特徵碼的位置可能和實際不同,目前發現jpg的寬高特徵碼不確定。如果以後發現特徵碼規律會回來修改這篇博客。

  所有數據都是QQ截圖出來的,並且做了多張比較,以下例子只是其中之一。

bmp(771*434):

   bmp

  可以看出width低位:0x12,高位:0x13。height低位:0x16,高位0x17。

PNG(906*440)

  png

  width低位:0x13,高位0x12。height低位:0x17,高位0x16。和bmp剛好相反

GIF(976*402)

  gif

  width低位:0x07,高位0x06。height低位:0x09,高位0x08。

JPG(800*525)

  jpg

   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)

發佈了29 篇原創文章 · 獲贊 14 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章