天天看点

获取一张图片所包含的像素数

/**

      * 获取一张图片所包含的像素数

      * @param 

      * @return

      */

    public static long getImagePixes(InputStream is)

    {

        if (is == null )

        {

            return -1;

        }

        try

        {

            int b = is.read();

            if (b == 0xff )

            {

                b = is.read();

                if (b == 0xd8)

                {

                    return getJpgPixes(is);

                } 

            }

            else if (b == 0x47)

            {

                b = is.read();

                if (b == 0x49)

                {

                    b = is.read();

                    if (b == 0x46)

                    {

                        is.skip(3);//跳过3字节

                        int w = (is.read() | (is.read() << 8));

                        int h = (is.read() | (is.read() << 8));

                        return w * h;

                    } 

                } 

            }

            else if (b == 0x42)

            {

                b = is.read();

                if (b == 0x4d)

                {

                    is.skip(16);

                    long w = (is.read() | (is.read() << 8) | (is.read() << 16) | (is.read() << 24));

                    long h = (is.read() | (is.read() << 8) | (is.read() << 16) | (is.read() << 24));

                    return w * h;

                }

                

            }

            else if (b == 0x89)

            {

                b = is.read();

                if (b == 0x50)

                {

                    b = is.read();

                    if (b == 0x4E)

                    {

                        is.skip(13);//跳过3字节

                        long w = ((is.read()<< 24) | (is.read() << 16) | (is.read() << 8) | is.read());

                        long h = ((is.read()<< 24) | (is.read() << 16) | (is.read() << 8) | is.read());

                        return w * h;

                    } 

                } 

            }

        }

        catch (Exception e) 

        {

            e.printStackTrace();

        }

        return -1;

    }      

继续阅读