一般手機(jī)常用到png榄攀,jpeg蔽莱,gif幾種文件格式。
每種文件的格式都寫在了文件的前幾個字節(jié)中钧排,具體如下:
png:
文件前16個字節(jié)是十六進(jìn)制數(shù):89 50 4E 47 0D 0A 1A 0A
一般來說制轰,只要識別第一個int值是0x89504E47即可判斷是否png圖片前计,當(dāng)然還有是否有alpha的區(qū)別,只需要如下即可:
reader.skip(25-4);
intalpha = reader.getByte();
// A RGB indexed PNG can also have transparency. Better safe than sorry!
alpha >=3?alpha_png:no_alpha_png;
至于原理可見:
https://stackoverflow.com/questions/2057923/how-to-check-a-png-for-grayscale-alpha-color-type
gif:
gif相對簡單點垃杖,前幾個字符是gif87(/9)a,有兩種標(biāo)準(zhǔn)男杈,gif87a,gif89a调俘,如果只是識別伶棒,只需識別前三個字節(jié)gif即可,即前三個字節(jié)等于0x474946脉漏。如果要用到gif89a的一些更高級的特性苞冯,可以識別第五個字節(jié)。
jpg:
jpg最簡單侧巨,只需要識別前6個字節(jié)甚至前4個自己就夠了,前6個字節(jié)是FFD8FF鞭达,一般識別FFD8就能確定是jpg了司忱。