判斷圖片格式

Linux/Unix下系統判斷文件類型並不依據文件名,也即不會根據文件後綴來判斷文件的類型。從網上下載了一個圖片,沒有後綴,希望能夠正確判斷出格式,以便於共享到其他平臺,該怎麼辦呢?

不同文件類型的文件頭部信息不同,比較流行的圖片的格式有jpg,png, gif等,下面列出jpg,png,gif文件頭(16進制):

JPEG (jpg),文件頭:FFD8FF

PNG (png),文件頭:89504E47

GIF (gif),文件頭:47494638

有了文件頭,判斷文件就很容易了.讀取圖片文件頭部信息,之後進行比較即可。有很多已有的編輯器可以直接讀取文件的二進制信息,下面使用xxd進行二進制信息讀取並判斷:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
#judge image file type

#判斷是否只有一個參數
if [ $# !1 ]
 then 
  echo "parameter error"
else
  ## 讀取前3個字節與前4個字節對應的16進制
  len3=`xxd -p -l 3 $1`
  len4=`xxd -p -l 4 $1`
  if [ $len3 == "ffd8ff" ]
    then
      echo "The type is jpg" 
  elif [ $len4 == "89504e47" ]
    then
       echo "The type is png"
  elif [ $len4 == "47494638" ]
    then
       echo "The type is gif"
  else
       echo "The type is others"
   fi
fi

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