(PECL imagick 2, PECL imagick 3)
Imagick::setImageTicksPerSecond — Устанавливает продолжительность отображения кадра
Регулирует продолжительность отображения кадра анимированного изображения.
Замечание:
Для анимированных GIF-изображений эта функция не изменяет количество "тактов изображения" в секунду, которое всегда определяется как 100. Вместо этого она регулирует количество времени, в течение которого отображается кадр, чтобы имитировать изменение "тактов в секунду".
Например, для анимированного GIF-изображения, где каждый кадр отображается в течение 20 тактов (1/5 секунды), когда вызывается этот метод для каждого кадра этого изображения с аргументом
50
, кадры корректируются и будут отображаться в течение 40 тактов (2/5 секунды) и анимация будет воспроизводиться с половиной исходной скорости.
ticks_per_second
Продолжительность, в течение которой должно отображаться изображение, выражается в тактах в секунду.
Функция в случае успешной работы возвращает true
.
Пример #1 Изменение анимированного GIF-изображения с помощью Imagick::setImageTicksPerSecond()
<?php
// Изменение анимированного gif-изображения так, чтобы первая половина gif воспроизводилась с половинной скоростью,
// а вторая половина воспроизводилась с удвоенной скоростью.
$imagick = new Imagick(realpath("Test.gif"));
$imagick = $imagick->coalesceImages();
$totalFrames = $imagick->getNumberImages();
$frameCount = 0;
foreach ($imagick as $frame) {
$imagick->setImageTicksPerSecond(50);
if ($frameCount < ($totalFrames / 2)) {
// Измените кадр так, чтобы он отображался вдвое дольше, чем сейчас.
$imagick->setImageTicksPerSecond(50);
} else {
// Измените кадр так, чтобы он отображался вдвое меньше, чем сейчас.
$imagick->setImageTicksPerSecond(200);
}
$frameCount++;
}
$imagick = $imagick->deconstructImages();
$imagick->writeImages("/path/to/save/output.gif", true);
?>