PHP Imagick - Анимированный GIF, кадров в секунду

1

В этот код

$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?

Благодарю!

Теги:
animated-gif
imagick

2 ответа

0
Лучший ответ

Из документов php:

Количество времени, выраженное в "тиках", на которое должно отображаться изображение. Для анимированных GIF файлов есть 100 тиков в секунду, поэтому значение 20 будет составлять 20/100 секунды, ака 1/5-й секунды.

Таким образом, 24 кадра в секунду, где второе значение равно 100, будет равно 100/24 или 4.1. Значение должно быть целым числом, поэтому округление будет равно 4. Было бы более естественно делать 20 кадров в секунду, что будет значением задержки 5 или 25 кадров в секунду, что даст значение задержки 4.

1

Найдено:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню