C#中怎么获得GIF动画文件中每一帧的时间(毫秒)?

2024-12-13 08:50:32
推荐回答(2个)
回答1:

Image img=Image.FromFile("C://1.gif");//加载Gif图片
FrameDimension dim = new FrameDimension(img.FrameDimensionsList[0] );
for (int i = 0; i < img.GetFrameCount(dim);i++ )//遍历图像帧
{
img.SelectActiveFrame(dim, i);//激活当前帧
for (int j = 0; j < img.PropertyIdList.Length; j++)//遍历帧属性
{
if ((int)img.PropertyIdList.GetValue(j) == 0x5100)/.如果是延迟时间
{
PropertyItem pItem = (PropertyItem)img.PropertyItems.GetValue(j);//获取延迟时间属性
byte[] delayByte = new byte[4];//延迟时间,以1/100秒为单位
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];
int delay=BitConverter.ToInt32(delayByte, 0)*10; //乘以10,获取到毫秒
MessageBox.Show(delay.ToString());//弹出消息框,显示该帧时长
break;
}
}
}

回答2:

总帧数除以播放一次的时间不就得到每一帧的时间了吗