【发布时间】:2012-12-11 18:51:49
【问题描述】:
关于裁剪图像的信息很多,但尝试裁剪(或修剪)动画会产生奇怪的结果。有时它们会闪烁,或者带有额外的帧,或者某些帧正确裁剪而其他帧会偏移。如何防止这一切发生?
【问题讨论】:
标签: imagemagick crop animated-gif
关于裁剪图像的信息很多,但尝试裁剪(或修剪)动画会产生奇怪的结果。有时它们会闪烁,或者带有额外的帧,或者某些帧正确裁剪而其他帧会偏移。如何防止这一切发生?
【问题讨论】:
标签: imagemagick crop animated-gif
convert input.gif -coalesce -repage 0x0 -crop WxH+X+Y +repage output.gif
-coalesce 重建完整帧。-repage 0x0 强制重置。+repage 即可。【讨论】:
+repage 真的对我有用,谢谢!出于某种原因,ImageMagick 仅将画布用于动画 .gif(在 .png 或 .jpeg 中没有发生)。
即使使用合并和重新分页,我也无法让 ImageMagick 很好地裁剪和调整动画 gif 的大小。
我发现了一个名为 Gifsicle 的程序,它非常适合处理动画 gif。
gifsicle --crop 0,0-100,100 --output out.gif in.gif
它还可以进行各种其他操作。看看吧!
【讨论】:
--crop X1,Y1-X2,Y2 输入右上角和左下角坐标进行裁剪,也可以使用--crop X1,Y1+WxH 指定所需区域的宽度和高度
【讨论】:
convert $input -trim -layers trim-bounds $output 正是您可能需要的。 +repage 选项可能看起来是正确的,但我向你保证,在这种情况下它不会。
动画通常经过优化,这意味着某些帧比其他帧小。因此,在 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
【讨论】: