c++ - GDI+ gif速度问题

标签 c++ gdi+ frame gif intervals

我正在使用 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/

相关文章:

c++ - 编译器有时可以缓存声明为 volatile 的变量吗

c++ - 为什么两个不同的概念都称为 "heap"?

c# - 翻转绘制文本/字符串的 GraphicsPath

c# - VisualStyleRenderer 到位图

java - 事件发生后如何调整框架的大小?

c++ - STL容器相当于Delphi集?

c# - 从半透明位图创建 GraphicsPath

delphi - 动态创建的框架中的控件对齐问题

python - 在 tkinter 中更改框架的大小,由类定义

c++ - "libstdc++-6..."没有可用的源