如何在.net中分割动画gif?

Sim*_*mon 5 .net file-format image-manipulation image gif

如何在.net中将动画gif拆分为其组成部分?

具体来说,我想将它们加载到内存中的Image(s)(System.Drawing.Image)中。

======================

根据SLaks的回答,我现在有了这个

public static IEnumerable<Bitmap> GetImages(Stream stream)
{
    using (var gifImage = Image.FromStream(stream))
    {
        //gets the GUID
        var dimension = new FrameDimension(gifImage.FrameDimensionsList[0]);
        //total frames in the animation
        var frameCount = gifImage.GetFrameCount(dimension); 
        for (var index = 0; index < frameCount; index++)
        {
            //find the frame
            gifImage.SelectActiveFrame(dimension, index);
            //return a copy of it
            yield return (Bitmap) gifImage.Clone();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 5

使用SelectActiveFrame方法选择Image包含动画 GIF的实例的活动帧。例如:

image.SelectActiveFrame(FrameDimension.Time, frameIndex);
Run Code Online (Sandbox Code Playgroud)

要获取帧数,​​请调用 GetFrameCount(FrameDimension.Time)

如果你只是想播放动画,你可以把它放入一个PictureBox或者使用ImageAnimator类。