(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)) {
// 修改帧,使其显示时间是当前的两倍
$imagick->setImageTicksPerSecond(50);
} else {
// 修改帧,使其显示时间是当前的一半
$imagick->setImageTicksPerSecond(200);
}
$frameCount++;
}
$imagick = $imagick->deconstructImages();
$imagick->writeImages("/path/to/save/output.gif", true);
?>