【问题标题】:How do I crop an animated gif using ImageMagick?如何使用 ImageMagick 裁剪动画 gif?
【发布时间】:2012-12-11 18:51:49
【问题描述】:

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

【问题讨论】:

    标签: imagemagick crop animated-gif


    【解决方案1】:
    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 即可。

    【讨论】:

    • 该命令输出一系列单独的文件,附加了 -0、-1、-2 等,而不是 output.gif 中的单个文件
    • 对我来说很好。非常感谢!
    • +repage 真的对我有用,谢谢!出于某种原因,ImageMagick 仅将画布用于动画 .gif(在 .png 或 .jpeg 中没有发生)。
    • 这比 gifsicle 慢,而且我的 600kB 文件也变成 16MB 文件
    • 顺便说一句,如果您在理解宽度、高度、x 偏移量和 y 偏移量时遇到困难,那么可以这样想:x-offset 和 y-offset 是裁剪的起点,宽度和高度将是作物行进的距离。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 这有助于保持文件较小。对于我的用例,ImageMagick 将尺寸扩大了 3.7 倍。
    • 前 2 个数字是以像素为单位的左上角坐标,其他 2 个数字是要裁剪区域的右下角坐标。
    • 您可以使用--crop X1,Y1-X2,Y2 输入右上角和左下角坐标进行裁剪,也可以使用--crop X1,Y1+WxH 指定所需区域的宽度和高度
    【解决方案3】:

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

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

    这里是source

    【讨论】:

    • 这是最终为我工作的那个。我花了最后半个小时左右试图弄清楚如何从我的 gif 中自动修剪空白空间,这个答案就是它的作用。对于我这个时代的未来人,如果文件格式正确,convert $input -trim -layers trim-bounds $output 正是您可能需要的。 +repage 选项可能看起来是正确的,但我向你保证,在这种情况下它不会。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2017-11-17
      • 2021-01-21
      • 2019-06-07
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      相关资源
      最近更新 更多