如何使用 GraphicsMagick 从图像中裁剪/调整背景/边框的大小
Posted
技术标签:
【中文标题】如何使用 GraphicsMagick 从图像中裁剪/调整背景/边框的大小【英文标题】:How do I crop/resize a background/border out of an image with GraphicsMagick 【发布时间】:2014-09-10 17:10:04 【问题描述】:我在一大组图像中有一些图像,这些图像具有围绕图像本身的白色(或黑色)边框。我怎么能...
-
将图像裁剪为没有所述背景/边框的尺寸
调整图像大小以填充给定的居中输出大小。
例如,我上传了一个大小为 1280x1024 像素的图片,它有一个白色(或黑色)边框,内部尺寸为 800x700(可能未居中),我想裁剪掉该边框,然后调整大小填充 640x480 输出。这将有效地拍摄内部图像,然后填充 640x480,有效地从原始图像中裁剪出额外 100 像素的高度。
我更喜欢可以是带有图形魔法的批处理/shell 脚本,但也可以通过 phantomjs 接受解决方案。如果可能的话,我宁愿避免使用其他工具/语言。
【问题讨论】:
我已经搜索了一些解决方案,我可以找到要裁剪的命令,但不确定实际检测...我可以弄清楚的填充...我应该也可以使用 phantomjs 或类似的东西来做到这一点,但我希望有人能找到解决这个问题的方法。 【参考方案1】:Trim会根据角像素去除边框,
Extent 和Gravity 会使图像具有一定的大小并相应地对齐,
另见Geometry参数,
convert -trim source.png trim.png
convert -extent 800x600 -gravity center trim.png frame.png
以下是图片的尺寸:
来源:722 x 480 修剪:640 x 400 画幅:800x 600编辑
这将调整图像的大小以适合 800 像素宽,如果小于则使其高度为 600:
convert -resize 800x600^ -extent 800x600 -gravity center trim.png resize.png
请参阅http://www.imagemagick.org/Usage/resize/#fill 了解所有详细信息,特别是您应该测试它在肖像图像上的表现。
此外,如果您在 resize
参数处删除 800,它将适合其高度:
convert -resize x600^ -extent 800x600 -gravity center trim.png resize.png
编辑 2
您必须将插入符号与其中一个轴一起使用:
convert -resize 1200^ -extent 1200x600 -gravity center trim.png resize1.png
如您所见,顶部和底部已被修剪,并且图像已根据其宽度进行拟合。
【讨论】:
几乎...假设最终输出为 300x180(而不是帧),我希望最终输出采用 (trim.png) 并在 output.png 中缩放/居中全宽将适合,但顶部/底部可能会被裁剪。 或者即使最终输出是 800x600,我也希望图像缩放到垂直和水平居中的“最佳拟合”。感谢您抽出宝贵时间。 所以如果我这样做convert -resize ^ -extent 800x600 -gravity center trim.png resize.png
会调整大小以填充?意思是如果方面不同,它将酌情切断?
看看我的另一个编辑,这是你要找的吗?
关闭...基本上我希望它裁剪以适应(如果它更宽,按高度,如果它按宽度更高)...我只能猜测使用 ^
没有任何一个参数会这样做...稍后再试一下。以上是关于如何使用 GraphicsMagick 从图像中裁剪/调整背景/边框的大小的主要内容,如果未能解决你的问题,请参考以下文章
node js使用graphicsmagick调整文件夹中所有图像的大小
graphicsmagick - 将图像转换为 pdf,反之亦然
为啥 Imagemagick 或 GraphicsMagick 在调整为较小尺寸时会增加我的 PNG 图像的 MB 大小?