如何更改gif中的延迟,而不改变其速度

时间:2018-08-13 07:41:33

标签: imagemagick imagemagick-convert

出于愚蠢的计时原因,我需要一个延迟为6的gif。A,我的材料是延迟20。

我真正需要的是将延迟降低到6,同时将每帧乘以三到四次。我不介意时机稍差。

这似乎是一个很简单的问题,但完全无法解决。

1 个答案:

答案 0 :(得分:2)

您可以这样做:

#!/bin/bash

# Split animation into constituent frames, saving as "frame-nnn.gif"
convert animated.gif -coalesce frame-%03d.gif

# Make array of all framenames
frames=( frame-*gif )

# Triplicate array elements
for ((i=0;i<${#frames[@]};i++)); do newframes+="${frames[i]} ${frames[i]} ${frames[i]} "; done

# DEBUG echo ${newframes[@]}

# Rebuild animation with new speed
convert -delay 10 ${newframes[@]} new.gif

# Clean up
rm frame-*.gif 2> /dev/null

我的脚本假设您的原著叫animated.gif,结果叫new.gif。显然,您可以根据需要更改延迟和重复次数,我选择的值只是说明性的。