如何使用ImageMagick裁剪动画gif?

时间:2012-12-26 06:28:02

标签: imagemagick crop animated-gif

有大量关于裁剪图像的信息,但尝试裁剪(或修剪)动画会产生奇怪的结果。有时它们闪烁,或带有额外的帧,或者某些帧正确裁剪而其他帧变得偏移。如何防止这一切发生?

4 个答案:

答案 0 :(得分:74)

convert input.gif -coalesce -repage 0x0 -crop WxH+X+Y +repage output.gif
  • GIF动画通常经过优化以节省空间,但在应用裁剪命令并单独处理每个帧时,imagemagick似乎并未考虑这一点。 -coalesce重建完整的框架。
  • 其他命令会考虑原始gif中提供的偏移信息,因此您需要强制使用-repage 0x0重置该信息。
  • 作物本身很简单,分别提供宽度,高度,x偏移和y偏移。例如,裁剪40宽30高,x偏移50 = 40x30 + 50 + 0。
  • 裁剪不会删除从图像中剪切的画布。在裁剪之后应用+repage将执行此操作。

答案 1 :(得分:33)

即使有了合并和重复,我也无法让ImageMagick很好地裁剪和调整GIF动画。

我找到了一个名为Gifsicle的程序,它非常适合处理GIF动画。

gifsicle --crop 0,0-100,100 --output out.gif in.gif

它还可以执行各种其他操作。看看吧!

答案 2 :(得分:0)

以下一行在Mac上与我合作

convert -dispose 2 input.gif -trim -layers TrimBounds animation.gif

以下是source

答案 3 :(得分:0)

动画经常被优化,这意味着某些帧比其他帧小。因此,在ImageMagick中,您可能希望在裁剪之前合并动画。

convert in_animation.gif -coalesce -crop WxH+X+Y +repage -layers optimize out_animation.gif


在读取输入动画之前,您可能需要添加-dispose方法以避免闪烁。如果要进行更改,还要在末尾设置-delay和-loop。

http://www.imagemagick.org/Usage/anim_basics/#dispose http://www.imagemagick.org/Usage/anim_basics/#coalesce http://www.imagemagick.org/script/command-line-options.php#layers