PHP Conference Japan 2024

Imagick::setImageTicksPerSecond

(PECL imagick 2, PECL imagick 3)

Imagick::setImageTicksPerSecond设置图像每秒刻度数

描述

public Imagick::setImageTicksPerSecond(int $ticks_per_second): bool

调整动画图像帧的显示时间。

注意:

对于动画 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);

?>

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top