一般手机常用到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了。
网友评论