我想控制Java applet中动画GIF的速度。有没有办法做到这一点?如果没有,有没有办法访问动画GIF的数据,以便applet可以自己按图像绘制动画图像?
答案 0 :(得分:2)
我认为帧率嵌入到GIF中。您可以以某种方式从GIF中提取图像,但这比从单个图像开始并在JS中设置动画更难,这比使用您的首选帧速率重新创建GIF更难。
如果您只打算使用一次GIF并且帧速率不会改变,只需重新创建GIF即可。如果您需要根据applet的输入更改速度,可以使用方法here。它在两个GIF之间交替显示,但是没有什么可以阻止你加载PNG并通过一组数组交替。
答案 1 :(得分:0)
动画GIF格式由每帧的数据和延迟值(显示该帧的时间)组成。每个帧的延迟是分开的,并存储为两个字节,并以百分之一秒为单位。
Netscape(当它是网络时),无法以超过每秒10帧的速度显示帧。所以很多工具只是把它搞定了,并将所有帧的延迟设置为0.很多旧的GIF和旧工具,都会使这些搞砸的帧延迟时间保持不变。
使用更快的计算机和浏览器,他们通过检查是否有任何帧延迟<= 50毫秒(20+ fps)来解决这个问题。如果他们这样做,延迟增加到100毫秒(10fps)。
原则上,最好的解决方案是修复您正在使用的GIF,以便在其中获得准确的帧延迟。如果这不可行,请使用相同的旧解决方法。将帧拆分出动画GIF并自行动画,如果指定的延迟<= 50ms,则默认为100ms延迟。这将为您提供与您在大多数Web浏览器中看到的行为相同的行为。
刚才读到这个。想想维基百科上提到的大部分细节(包括动画GIF格式和每帧延迟)。如果你真的想要一些可靠的参考资料,我可以为你挖掘它们。