C#分解gif各帧并保存

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //调用示例
            SaveFrame(@"F:\mzwu.com\test.gif");
        }

        /// <summary>
        /// 分解gif各帧并保存
        /// </summary>
        /// <param name="file">gif路径</param>
        private void SaveFrame(string file)
        {
            using (Image image = Image.FromFile(file))
            {
                FrameDimension fd = new FrameDimension(image.FrameDimensionsList[0]);
                int framecount = image.GetFrameCount(fd);
                string path = file.Replace(Path.GetExtension(file), "");

                //创建文件夹
                Directory.CreateDirectory(path);

                //保存各帧
                for (int i = 0; i < framecount; i++)
                {
                    image.SelectActiveFrame(fd, i);
                    image.Save(Path.Combine(path, "frame_" + i + ".jpg"), ImageFormat.Jpeg);
                }
            }
        }
    }
}


评论: 0 | 引用: 0 | 查看次数: 5795
发表评论
登录后再发表评论!