Jas*_*zak 6 c# animation gif frame
如何获得GIF动画的持续时间(播放时间)?
这是我的代码:
GifTime = PoczatkowyGIF.GetFrameCount(FrameDimension.Time);
//GifTime is a double; PoczatkowyGIF is my gif image.
Run Code Online (Sandbox Code Playgroud)
GifTime不准确.我的动画是3.8s,但是GifTime3.9s.我尝试的另一个动画是0.88秒,但是GifTime为0.那么如何获得动画时间呢?另外,如何编辑GIF的第一帧时间并将指定时间的帧添加到现有GIF?
在下面的代码段中,您可以看到如何计算总持续时间,累计每个帧的持续时间:
for (int f = 0; f < frameCount; f++)
{
this_delay = BitConverter.ToInt32(image.GetPropertyItem(20736).Value, index) * 10;
// Minimum delay is 100 ms
delay += (this_delay < 100 ? 100 : this_delay);
index += 4;
}
Run Code Online (Sandbox Code Playgroud)
请注意,帧持续时间不能短于100毫秒,这可能会影响您的计算差异.
您可以阅读有关检查.GIF的这篇文章,您可以在其中找到其余代码.
此外,要编辑动画图像的最后一帧,您可以使用
gifImage.SelectActiveFrame(dimension, first_frame_index);
Run Code Online (Sandbox Code Playgroud)
SelectActiveFrame 将允许您编辑图像,更改指定的(在您的情况下首先)框架.
我对此并不完全确定,但框架不支持添加帧,我使用MagickNet为此目的重新编码新的GIF.您可能还想看看NGif作为替代方案.
| 归档时间: |
|
| 查看次数: |
1705 次 |
| 最近记录: |