76

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

4

4 回答 4

90
convert input.gif -coalesce -repage 0x0 -crop WxH+X+Y +repage output.gif
  • 动画 gif 通常经过优化以节省空间,但 imagemagick 在应用裁剪命令时似乎并未考虑这一点,而是单独处理每一帧。-coalesce重建完整的帧。
  • 其他命令将考虑原始 gif 中提供的偏移信息,因此您需要强制将其重置为-repage 0x0.
  • 裁剪本身很简单,分别提供宽度、高度、x 偏移和 y 偏移。例如,在 x 偏移量为 50 = 40x30+50+0 时,作物 40 宽和 30 高。
  • 裁剪不会删除它从图像中剪下的画布。作物后应用+repage将做到这一点。
于 2012-12-26T06:28:01.933 回答
43

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

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

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

它还可以执行各种其他操作。一探究竟!

于 2013-11-13T23:00:48.577 回答
3

动画通常经过优化,这意味着某些帧比其他帧小。因此,在 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#层

于 2018-05-15T22:37:59.337 回答
2

以下行在 Mac 上与我一起使用

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

这里是

于 2018-05-15T19:36:39.413 回答