/// <summary> /// Tries to match imageHeaderByte and headerSize against every known /// image format. If any match succeeds, corresponding ImageFormat /// is returned. /// </summary> /// <returns> /// ImageFormat for given imageHeaderBytes or UNKNOWN if no such type /// could be recognized. /// </returns> private static ImageFormat DoGetImageFormat( byte[] imageHeaderBytes, int headerSize) { Preconditions.CheckNotNull(imageHeaderBytes); if (WebpSupportStatus.IsWebpHeader(imageHeaderBytes, 0, headerSize)) { return(GetWebpFormat(imageHeaderBytes, headerSize)); } if (IsJpegHeader(imageHeaderBytes, headerSize)) { return(ImageFormat.JPEG); } if (IsPngHeader(imageHeaderBytes, headerSize)) { return(ImageFormat.PNG); } if (IsGifHeader(imageHeaderBytes, headerSize)) { return(ImageFormat.GIF); } if (IsBmpHeader(imageHeaderBytes, headerSize)) { return(ImageFormat.BMP); } return(ImageFormat.UNKNOWN); }
/// <summary> /// Determines type of WebP image. imageHeaderBytes has to be header /// of a WebP image. /// </summary> private static ImageFormat GetWebpFormat(byte[] imageHeaderBytes, int headerSize) { Preconditions.CheckArgument(WebpSupportStatus.IsWebpHeader(imageHeaderBytes, 0, headerSize)); if (WebpSupportStatus.IsSimpleWebpHeader(imageHeaderBytes, 0)) { return(ImageFormat.WEBP_SIMPLE); } if (WebpSupportStatus.IsLosslessWebpHeader(imageHeaderBytes, 0)) { return(ImageFormat.WEBP_LOSSLESS); } if (WebpSupportStatus.IsExtendedWebpHeader(imageHeaderBytes, 0, headerSize)) { if (WebpSupportStatus.IsAnimatedWebpHeader(imageHeaderBytes, 0)) { return(ImageFormat.WEBP_ANIMATED); } if (WebpSupportStatus.IsExtendedWebpHeaderWithAlpha(imageHeaderBytes, 0)) { return(ImageFormat.WEBP_EXTENDED_WITH_ALPHA); } return(ImageFormat.WEBP_EXTENDED); } return(ImageFormat.UNKNOWN); }