我正在使用 C++ GDI+ 打开 gif
但是我发现帧间隔真的很奇怪。 与window的图片查看器播放不同。
我写的代码如下。
pMultiPageImg = new Bitmap(XXXXX);
int size = m_pMultiPageImg->GetPropertyItemSize(PropertyTagFrameDelay);
m_pTimeDelays = (PropertyItem*) malloc (size);
m_pMultiPageImg->GetPropertyItem(PropertyTagFrameDelay, size, m_pTimeDelays);
int frameSize = m_pMultiPageImg->GetFrameDimensionsCount();();
// the interal of frame FrameNumber:
long lPause = ((long*)m_pTimeDelays->value)[FrameNumber] * 10;
但是我发现一些帧 lPause <= 0。 这是什么意思?
我列出的代码是否适合获取间隔?
非常感谢!
最佳答案
gif header 中的帧持续时间字段只有两个字节长(解释为百分之一秒 - 允许值从 0 到 32.768 秒)。
您似乎将其解释为 long
,这在您的平台上可能是 4 个字节,因此您将读取另一个字段以及持续时间。从您提供的代码很难判断,但我认为这就是问题所在。
关于c++ - GDI+ gif速度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1587388/