В этот код
$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?Спасибо!
От документы 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));