(PECL imagick 2, PECL imagick 3)
Imagick::setImageTicksPerSecond — 设置图像的每秒帧数
调整动画图像中帧的显示时间。
注意:
对于动画 GIF,此函数不会更改每秒帧数,该值始终定义为 100。相反,它会调整帧的显示时间以模拟每秒帧数的更改。
例如,对于动画 GIF,如果每个帧显示 20 帧(1/5 秒),当在此方法的每个帧上调用此方法并使用参数
50
时,帧将调整为显示 40 帧(2/5 秒),并且动画将以原始速度的一半播放。
ticks_per_second
以每秒帧数表示的图像应显示的持续时间。
成功时返回 true
。
范例 #1 使用 Imagick::setImageTicksPerSecond() 修改动画 Gif
<?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)) {
// 修改帧以使其显示时间是目前的 2 倍
$imagick->setImageTicksPerSecond(50);
} else {
// 修改帧以使其显示时间是目前的一半
$imagick->setImageTicksPerSecond(200);
}
$frameCount++;
}
$imagick = $imagick->deconstructImages();
$imagick->writeImages("/path/to/save/output.gif", true);
?>