zoukankan      html  css  js  c++  java
  • 从gif动画图像中导出桢的方法实现

    近几天,一直在搞gif文件格式,在网上找到一个,正在分析。可以说gif图像在几种图像格式里面算是比较复杂的了,废话少说,先实现一个从gif动画里面导出桢来的方法:
    效果如下:
    原来gif动画图像:
    导出来的图像:

    代码:
     1 public void ExportFromGif(string gifFile,string outputDir)
     2        {
     3            Bitmap bmp = new Bitmap(gifFile);
     4            if (bmp.RawFormat.Guid != ImageFormat.Gif.Guid)
     5            {
     6                throw new Exception("不是gif格式的文件,格式错误!");
     7            }

     8            //获得桢的维数
     9            foreach (Guid guid in bmp.FrameDimensionsList)
    10            {
    11                FrameDimension frameDimension = new FrameDimension(guid);
    12                //获得gif动画桢的数量
    13                int frameCount = bmp.GetFrameCount(frameDimension);
    14                //用于存放导出的图像
    15                for (int i = 0; i < frameCount; i++)
    16                {
    17                    //选中一桢
    18                    int selectResult =  bmp.SelectActiveFrame(frameDimension, i);
    19                    if (selectResult == 0)
    20                    {
    21                        Image img = Image.FromHbitmap(bmp.GetHbitmap());
    22                        string savePath = outputDir + Guid.NewGuid().ToString()+".jpg";
    23                        img.Save(savePath);
    24                        img.Dispose();
    25                    }

    26                }

    27            }

    28        }

    29    }

    本来想在SelectActiveFrame后像处理jpeg图像一样黑白,但是SelectActiveFrame执行后,上次的修改都变成无效的了,郁闷。SaveAdd方法也不能用于gif格式。系统只提供了gif的解码器,却没有提高编码器。晕倒。
    自己从网上找了一个,正在学习
  • 相关阅读:
    【L.M.W.Y.D】Scrum Meeting 5
    【L.M.W.Y.D】Scrum Meeting 4
    多喝热水 实验十 团队作业6:团队项目用户验收&Beta冲刺
    多喝热水【Beta】Scrum meeting 4
    多喝热水【Beta】Scrum meeting 3
    多喝热水【Beta】Scrum meeting 2
    多喝热水【Beta】Scrum meeting 1
    多喝热水 实验九 团队作业5:团队项目编码与Alpha冲刺
    多喝热水 [Alpha] Scrum Meeting 7
    多喝热水 [Alpha] Scrum Meeting 6
  • 原文地址:https://www.cnblogs.com/jillzhang/p/530919.html
Copyright © 2011-2022 走看看