public long skip(long total) throws IOException {
            if (total < 0) {
                return 0;
            }

            long toSkip = total;
            while (toSkip > 0) {
                long skipped = is.skip(toSkip);
                if (skipped > 0) {
                    toSkip -= skipped;
                } else {
                    // Skip has no specific contract as to what happens when you reach the end of
                    // the stream. To differentiate between temporarily not having more data and
                    // having finished the stream, we read a single byte when we fail to skip any
                    // amount of data.
                    int testEofByte = is.read();
                    if (testEofByte == -1) {
                        break;
                    } else {
                        toSkip--;
                    }
                }
            }
            return total - toSkip;
        }
Parse the orientation from the image header. If it doesn't handle this image type (or this is not an image)
it will return a default value rather than throwing an exception.

@return The exif orientation if present or -1 if the header couldn't be parsed or doesn't contain an orientation
@throws IOException
core/src/main/java/com/bumptech/glide/load/resource/bitmap/ImageHeaderParser.java