Java 类com.bumptech.glide.load.resource.bitmap.ImageHeaderParser 实例源码

项目:GlidePlus    文件:ImageWrapperResourceDecoder.java   
private ImageWrapper decodeStream(ImageVideoWrapper source, int width, int height, byte[] bytes)
        throws IOException {
    InputStream bis = streamFactory.build(source.getStream(), bytes);
    bis.mark(MARK_LIMIT_BYTES);
    ImageHeaderParser.ImageType type = parser.parse(bis);
    bis.reset();

    ImageWrapper result = null;
    if (type == ImageHeaderParser.ImageType.GIF) {
        result = decodeGifWrapper(bis, width, height);
    }
    // Decoding the gif may fail even if the type matches.
    if (result == null) {
        // We can only reset the buffered InputStream, so to start from the beginning of the stream, we need to
        // pass in a new source containing the buffered stream rather than the original stream.
        ImageVideoWrapper forBitmapDecoder = new ImageVideoWrapper(bis, source.getFileDescriptor());
        result = decodeBitmapWrapper(forBitmapDecoder, width, height);
    }
    return result;
}
项目:GlidePlus    文件:ImageWrapperResourceDecoder.java   
public ImageHeaderParser.ImageType parse(InputStream is) throws IOException {
    return new ImageHeaderParser(is).getType();
}