PHP Imagick - GIF 动画,每秒帧数

PHP Imagick - Animated GIF, frames per second

进入这段代码

$GIF = new Imagick();
$GIF->setFormat("gif");

for ($i = 0; $i < count($file_name); ++$i) {
     $frame = new Imagick();
     $frame->readImage($file_tmp[$i]);
     $frame->setImageDelay(10);
     $GIF->addImage($frame);
}

header("Content-Type: image/gif");
echo $GIF->getImagesBlob();

我有这部分来设置我想要的

 $frame->setImageDelay(10);

而不是 10,每秒 24 帧的正确等效值是多少?

[1 秒/fps] >>> (1000/24) = 42 ?

谢谢!

找到了:

// Ticks per second
   $tps = 100;
// Frames per second
   $fps = 24
   $frame->setImageDelay(ceil($tps/$fps));

来自php documents

The amount of time expressed in 'ticks' that the image should be displayed for. For animated GIFs there are 100 ticks per second, so a value of 20 would be 20/100 of a second aka 1/5th of a second.

因此,24 fps(其中秒的值为 100)将是 100/24 或 4.1。该值必须是一个整数,因此向下舍入为 4。每秒 20 帧(延迟值为 5)或每秒 25 帧(延迟值为 4)会更自然。