如何使用GraphicsMagick从图像中裁剪/调整背景/边框的大小

时间:2014-09-10 17:10:04

标签: resize crop edge-detection graphicsmagick picturefill

我在一大堆图像中有一些图像,这些图像具有围绕图像本身的白色(或黑色)边框。我怎么能......

  1. 将图像裁剪为没有背景/边框的尺寸
  2. 调整图像大小以填充居中的给定输出大小。
  3. 例如,我有一个1280x1024像素的上传图片,它有一个白色(或黑色)边框,内部尺寸为800x700(可能不居中),我想裁剪掉那个边框,然后调整大小填充640x480输出。这将有效地拍摄内部图像,然后填充640x480,有效地从原始图像中裁剪出100px的高度。


    我更喜欢可以是带有图形魔法的批处理/ shell脚本的东西,但也会通过phantomjs接受解决方案。如果可能的话,我宁愿避免使用其他工具/语言。

1 个答案:

答案 0 :(得分:2)

Trim会根据角落像素删除边框,

ExtentGravity会使图片具有一定的尺寸并相应地对齐,

另见Geometry参数,

convert -trim source.png trim.png
convert -extent 800x600 -gravity center trim.png frame.png

enter image description here

以下是所显示图像的尺寸:

  • 资料来源:722 x 480
  • 修剪:640 x 400
  • 画面:800x 600

修改

这将调整图像的大小以适应800像素宽,如果它更小则使其高度为600:

enter image description here

convert -resize 800x600^ -extent 800x600 -gravity center trim.png resize.png

有关所有细节,请参阅http://www.imagemagick.org/Usage/resize/#fill,特别是您应该测试它在肖像图像上的行为。

此外,如果您在resize参数中移除800,它将适合其高度:

enter image description here

convert -resize x600^ -extent 800x600 -gravity center trim.png resize.png

编辑2

您必须在其中一个轴上使用插入符号:

convert -resize 1200^ -extent 1200x600 -gravity center trim.png resize1.png

enter image description here

如您所见,顶部和底部已被修剪,图像根据其宽度进行调整。