public static FrameMetadata GetFrameMetadata(BitmapDecoder decoder, GifFile gifMetadata, int frameIndex) { if (gifMetadata != null && gifMetadata.Frames.Count > frameIndex) { return(GetFrameMetadata(gifMetadata.Frames[frameIndex])); } return(GetFrameMetadata(decoder.Frames[frameIndex])); }
public static System.Drawing.Size GetFullSize(BitmapDecoder decoder, GifFile gifMetadata) { if (gifMetadata != null) { var lsd = gifMetadata.Header.LogicalScreenDescriptor; return(new System.Drawing.Size(lsd.Width, lsd.Height)); } var width = decoder.Metadata.GetQueryOrDefault("/logscrdesc/Width", 0); var height = decoder.Metadata.GetQueryOrDefault("/logscrdesc/Height", 0); return(new System.Drawing.Size(width, height)); }
public static BitmapDecoder GetDecoder(string fileName, out GifFile gifFile) { gifFile = null; BitmapDecoder decoder = null; using (var stream = new FileStream(fileName, FileMode.Open)) { stream.Position = 0; decoder = BitmapDecoder.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); if (decoder is GifBitmapDecoder)// && !CanReadNativeMetadata(decoder)) { stream.Position = 0; gifFile = GifFile.ReadGifFile(stream, true); } //if (decoder == null) // throw new InvalidOperationException("Can't get a decoder from the source."); } return(decoder); }