加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在框架中拆分.gif文件?

发布时间:2020-12-15 08:30:33 所属栏目:百科 来源:网络整理
导读:我找到的所有代码都给了我相同的结果:一堆精确的框架.含义:它给出了第一帧的列表,重复X次.我使用的.gif有30帧,所以我得到第一帧的30倍,而不是30帧. public static Image[] GetFramesFromAnimatedGIF(Image IMG) { ListImage IMGs = new ListImage(); int L
我找到的所有代码都给了我相同的结果:一堆精确的框架.含义:它给出了第一帧的列表,重复X次.我使用的.gif有30帧,所以我得到第一帧的30倍,而不是30帧.
public static Image[] GetFramesFromAnimatedGIF(Image IMG)
    {
        List<Image> IMGs = new List<Image>();
        int Length = IMG.GetFrameCount(FrameDimension.Time);

        for (int i = 0; i < Length; i++)
        {
            IMG.SelectActiveFrame(FrameDimension.Time,i);
            IMGs.Add(IMG);
        }

        return IMGs.ToArray();
    }

我错过了什么?我看过的所有代码都给第一帧重复X次.

这是应该看的(使用网页).看看每个框架是如何不同的?

这是在将数组内的每个帧保存在文件夹位置(一堆相??等的帧)之后它找我的样子:

P.S.:是的,它是我正在使用的图像.gif.

更新:问题似乎是当我在OpenFileDialog中读取文件时,因为如果我通过代码传递我的.gif文件就可以了.那么如何在OpenFileDialong中阅读动画gif?谢谢.

解决方法

IMGs.Add(IMG);

这就是错误,你一遍又一遍地添加相同的IMG对象.您需要制作框架的深层副本.这很容易做到:

IMGs.Add(new Bitmap(IMG));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读