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

В этот код

$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 секунда / кадр / с] >>> (1000/24) = 42?

Спасибо!

1

Решение

От документы php:

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

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

0

Другие решения

Нашел это:

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

По вопросам рекламы [email protected]