R 中的动画 GIF 在每个间隔中丢失 3 毫秒

Animated GIF in R losing 3 ms in each interval

我正在使用 R 的 animation 库创建动画 GIF。下面的代码给出了一个例子。

library(animation)
saveGIF({
  par(bg=rgb(0,0,0),mar=c(0,0,0,0))
  for (i in 1:30) {
    plot(NULL,xlim=c(-1,1),ylim=c(-1,1))
    ang <- pi*i*12/180
    symbols(cos(ang),sin(ang),circles=1,inches=.2,bg='white',fg=NA,add=T)
  }
},interval=1/30,movie.name='clock.gif',ani.width=500,ani.height=500)

上面的代码生成下面的图像。

由于 interval 设置为 1/30(秒)并且有 30 帧(i in 1:30),我希望动画的周期接近 1 秒(即每帧应该持续 33 毫秒或 33.333 毫秒,如果可能的话)。但是,当我在 GIMP 上打开图像时,我发现每帧只有 30 毫秒,而不是 33 或 33.3 毫秒。我究竟做错了什么?有什么方法可以在每个循环中将其改进到精确的 1 秒,或者至少尽可能接近?

GIF file format指定延迟为无符号整数,表示"hundredths of a second."中的延迟它没有毫秒分辨率。

如果您希望每个循环接近 1 秒,请选择容易达到 100 的帧数。