几种图片文件格式的识别

一般手机常用到png,jpeg,gif几种文件格式。

每种文件的格式都写在了文件的前几个字节中,具体如下:

png:

文件前16个字节是十六进制数:89 50 4E 47 0D 0A 1A 0A

一般来说,只要识别第一个int值是0x89504E47即可判断是否png图片,当然还有是否有alpha的区别,只需要如下即可:

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,有两种标准,gif87a,gif89a,如果只是识别,只需识别前三个字节gif即可,即前三个字节等于0x474946。如果要用到gif89a的一些更高级的特性,可以识别第五个字节。

jpg:

jpg最简单,只需要识别前6个字节甚至前4个自己就够了,前6个字节是FFD8FF,一般识别FFD8就能确定是jpg了。

你可能感兴趣的:(几种图片文件格式的识别)