如何使用 ImageMagick 裁剪动画 gif?

有很多关于裁剪图像的信息,但是尝试裁剪(或修剪)动画会产生奇怪的结果。有时它们会闪烁,或者附带额外的帧,或者一些帧正确裁剪,而另一些帧偏移。我怎样才能阻止这一切的发生?

25082 次浏览
convert input.gif -coalesce -repage 0x0 -crop WxH+X+Y +repage output.gif
  • 动画的 gif 通常被优化以节省空间,但是 image magick 在应用农作物命令时似乎并没有考虑到这一点,而是分别对待每一帧。-coalesce重建完整的帧。
  • 其他命令将考虑原始 gif 中提供的偏移量信息,因此需要强制使用 -repage 0x0重置这些信息。
  • 作物本身很简单,分别提供了宽度、高度、 x 偏移量和 y 偏移量。例如,在 x 偏移量为50 = 40x30 + 50 + 0时,作物宽度为40,高度为30。
  • 裁剪不会移除它从图像中剪切的画布。在裁剪后应用 +repage将会这样做。

即使使用合并和重新编页,我也不能让 ImageMagick 很好地裁剪和调整动画 gif 的大小。

我发现了一个叫做 冰棒的程序,它非常适合操作动画 gif。

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

它还可以做各种其他的操作。看看吧!

下面这句话在 Mac 上对我很有用

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

这是 来源

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

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


在读取输入动画之前,您可能需要添加一个处置方法,以避免闪烁。如果要进行更改,还可以在末尾设置-late 和-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