В этот код
$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?
Благодарю!
Из документов php:
Количество времени, выраженное в "тиках", на которое должно отображаться изображение. Для анимированных GIF файлов есть 100 тиков в секунду, поэтому значение 20 будет составлять 20/100 секунды, ака 1/5-й секунды.
Таким образом, 24 кадра в секунду, где второе значение равно 100, будет равно 100/24
или 4.1. Значение должно быть целым числом, поэтому округление будет равно 4. Было бы более естественно делать 20 кадров в секунду, что будет значением задержки 5 или 25 кадров в секунду, что даст значение задержки 4.
Найдено:
// Ticks per second
$tps = 100;
// Frames per second
$fps = 24
$frame->setImageDelay(ceil($tps/$fps));