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));
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)会更自然。
进入这段代码
$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));
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)会更自然。