社区
C#
帖子详情
如何获得gif帧与帧的延时
华丽的原型
2006-08-31 04:23:11
如题
...全文
590
6
打赏
收藏
如何获得gif帧与帧的延时
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
华丽的原型
2006-11-21
打赏
举报
回复
public static void GetFrame(Image image, ref Image[] frames, ref Int32[] delay)
{
FrameDimension fd = new FrameDimension(image.FrameDimensionsList[0]);
int count = image.GetFrameCount(fd);
frames = new Image[count];
delay = new Int32[count];
System.IO.MemoryStream ms = new System.IO.MemoryStream();
for (int i = 0; i < count; i++)
{
image.SelectActiveFrame(fd, i);
image.Save(ms, ImageFormat.Png);
frames[i] = Image.FromStream(ms);
}
PropertyItem pItem = null;
for (int i = 0; i < image.PropertyIdList.Length; i++)
{
if ((int)image.PropertyIdList.GetValue(i) == 0x5100)
{
pItem = (PropertyItem)image.PropertyItems.GetValue(i);
break;
}
}
byte[] delayByte = new byte[4];
if (pItem != null)
{
for (int i = 0; i < count; i++)
{
//将字节数组转成整型,这里数组大小为4是因为c#里一个整型4字节长
delayByte[0] = pItem.Value[i * 4];
delayByte[1] = pItem.Value[1 + i * 4];
delayByte[2] = pItem.Value[2 + i * 4];
delayByte[3] = pItem.Value[3 + i * 4];
delay[i] = BitConverter.ToInt32(delayByte, 0);
}
}
}
这是一个分解帧的方法,可以获得每一帧和每帧的延时.
获得帧的是PropertyItem,这里的PropertyItem将存放延时数.
图形文件有很多相关信息,如gif的延时,长度等等.这些数据都存放在image.PropertyItems集合里面,其中,只有image.PropertyId为0x5100才是存放延时的数据的.这些信息你可以上msdn上查到,英文的.另外取得的延时数组delay[]比实际的小10倍,即实际延时应该是delay[i]*10
Mittermeyer
2006-09-04
打赏
举报
回复
如果仅仅是为了显示Gif,不需要这么复杂,直接用ImageAnimator就可以了。
http://blog.csdn.net/Mittermeyer/archive/2006/08/28/1131535.aspx
华丽的原型
2006-09-04
打赏
举报
回复
自己解决了,gif文件本身存储有每帧的延时,可以利用PropertyItem取出来
华丽的原型
2006-09-01
打赏
举报
回复
谢谢愚翁的链接,不过里面只有gif的分解.我的目的是把分解后的gif逐帧显示,gif每帧之间肯定有延时,而且是不一样的,这个延时如何获得呢?
Knight94
2006-08-31
打赏
举报
回复
ref:
http://blog.csdn.net/knight94/archive/2006/07/03/871038.aspx
juge001
2006-08-31
打赏
举报
回复
mark
《MATLAB智能算法30个案例》:第17章 基于PSO工具箱的函数寻优算法
《MATLAB智能算法30个案例分析》是2011年7月1日由北京航空航天大学出版社出版的图书,作者是郁磊、史峰、王辉、胡斐。本书案例是各位作者多年从事算法研究的经验总结。书中所有案例均因国内各大MATLAB技术论坛网友的切身需求而精心设计,其中不少案例所涉及的内容和求解方法在国内现已出版的MATLAB书籍中鲜有介绍。《MATLAB智能算法30个案例分析》采用案例形式,以智能算法为主线,讲解了遗传算法、免疫算法、退火算法、粒子群算法、鱼群算法、蚁群算法和神经网络算法等最常用的智能算法的MATLAB实现。本书共
经典智能算法——粒子群寻优算法(MATLAB实现)
本着学习的心态了解Pytorch ,本文详细讲解 训练一个十分类器 Pytorch 库 需要准备 torch 1.5+ Python 3.7+ Github 代码来自https://github.com/fengdu78/machine_learning_beginner/tree/master/PyTorch_beginner
智能算法优化与实践:PSO与GA的改进策略
智能算法,作为人工智能领域中不可或缺的一环,已经广泛渗透至各行各业之中。在本章节,我们将先从智能算法的基本概念入手,简要介绍其起源与发展的大致脉络。随后,我们会概述智能算法应用的多样化领域,包括但不限于数据挖掘、模式识别、网络优化和生物信息学等。这些领域在寻找最优解或者近似最优解方面,智能算法发挥着不可替代的作用。读者将通过本章节
获得
对智能算法应用领域的一个全面了解,为接下来深入探讨各种智能算法的细节打下坚实的基础。
MATLAB中基于PSO工具箱的函数寻优算法解析与实现
粒子群优化算法(Particle Swarm Optimization, PSO)由James Kennedy和Russell Eberhart于1995年提出。它受鸟群觅食行为的启发,将每个个体看作一个粒子,粒子在解空间中移动,并根据自身的经验和群体的经验来更新自己的位置和速度。PSO算法特别适合于那些难以用梯度或其他导数信息来描述的复杂优化问题。PSO算法的每个粒子都具有位置和速度两个属性,分别代表当前解的位置和方向。
智能算法 | MATLAB实现PSO粒子群算法函数寻优
智能算法 | MATLAB实现PSO粒子群算法函数寻优
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章