使用 libMagick 裁剪 gif 图像

Posted

技术标签:

【中文标题】使用 libMagick 裁剪 gif 图像【英文标题】:crop gif image using libMagick 【发布时间】:2011-07-18 09:21:54 【问题描述】:

我正在尝试使用 libMagick.so 库裁剪 gif 图像。

./convert --version 
Version: ImageMagick 6.2.8 03/31/08 Q16 file:/usr/share/ImageMagick-6.2.8/doc/index.html

使用以下命令:

convert img.gif -crop 91x68+6+116 out.gif

out.gif 图像被裁剪,但未调整大小。我得到相同的图像大小,而所有图像都是透明的,除了从左点 6 像素开始的 91 像素和从顶部 116 像素开始的 68 像素。

我怎样才能使转换命令裁剪,只留下裁剪的部分作为输出图像。 顺便说一句,当我的输出图像是 jpg 时,我得到了预期的结果。

【问题讨论】:

【参考方案1】:

您需要为 GIF 文件添加 -repage 选项:

convert img.gif -crop 91x68+6+116 -repage 0x0 out.gif

问题在于 GIF 在动画时可以包含多个图像(不同大小),因此裁剪只会影响其中一个图像,而不会影响整个 GIF 画布大小。使用 0x0 作为画布大小是让 ImageMagick 确定图像应该有多大的简单快捷方式:

给定的画布大小为零,例如 '0x0' 强制它重新计算画布大小,以便图像(在其当前偏移处)将完全显示在该画布上。

【讨论】:

好吧,我尝试了你的想法,它部分奏效了。我发现当我使用 convert img.gif -crop 91x68+6+116! out.gif 我得到了我想要的结果,你能解释一下为什么吗?请 @Oded:“部分工作”是什么意思?几何参数格式记录在这里:imagemagick.org/script/command-line-processing.php#geometry

以上是关于使用 libMagick 裁剪 gif 图像的主要内容,如果未能解决你的问题,请参考以下文章

如何裁剪部分gif图像?

使用矩形尺寸裁剪图像

显示裁剪的图像

PHP Imagick 中的裁剪错误?

在 PHP 中裁剪图像

如何使用 convert -crop 为动画 gif/放大图像添加更多背景?