public static bool LoadGifFromDisk(string path) { try { LoadedGifImage = Image.FromFile(path); LoadedGifFrameDim = new FrameDimension(LoadedGifImage.FrameDimensionsList[0]); LoadedGifFrameCount = LoadedGifImage.GetFrameCount(LoadedGifFrameDim); var delayPropertyBytes = LoadedGifImage.GetPropertyItem(0x5100).Value; int averageFrameLen = 0; for (int i = 0; i < LoadedGifFrameCount; i++) { averageFrameLen += (BitConverter.ToInt32(delayPropertyBytes, i * 4) * 10); } averageFrameLen /= LoadedGifFrameCount; GifMillisconds = averageFrameLen; LoadedGifImage.SelectActiveFrame(LoadedGifFrameDim, 0); WorkingBitmap = new Bitmap(LoadedGifImage); ImageLoadState = LoadState.None; return(true); } catch (Exception) { return(false); } }
public static void DisposeGif() { if (LoadedStillBitmap != null) { LoadedStillBitmap.Dispose(); } if (LoadedGifImage != null) { LoadedGifImage.Dispose(); } }