裁剪图片背景但在Graphicsmagick中保留填充

3

我在php中组合Graphicsmagick命令,然后使用exec()调用它们。 我需要裁剪图像但保留20像素的填充。 因此,我想要做以下事情:

exec('gm convert input.jpg -trim -bordercolor white -border 20x20 output.jpg');

但使用被修剪的颜色,而不是白色。如何实现这一点?
2个回答

3
这对我有效。
gm convert input.jpg -crop 1x1+0+0 corner.txt
color=`sed -e "s/.* #/#/" corner.txt`
gm convert input.jpg -trim -bordercolor $color -border 20x20 output.jpg

GraphicsMagick中的txt格式没有头部(不像ImageMagick),因此(0,0)像素位于第一行(实际上是1x1图像的唯一一行)。裁剪为1x1图像的corner.txt文件只包含以下内容:

0,0: (255,255,255) #FFFFFF

在我的测试图像中,它碰巧是白色的,但它将是(0,0)像素的颜色。


谢谢您。我还发现fuzz参数非常有用,即使您有一个带有边缘伪影的糟糕JPEG图像,也可以使用该参数来修剪边缘。 - Jon Jaques

1

目前来看,使用GraphicsMagick(截至本文写作时:GM v1.4 beta)似乎无法实现此功能。

在ImageMagick中,这是可能的,因为IM提供了一个fx命令来采样给定像素的颜色值:

convert myimage.png -format '%[fx:p{10,20}]' info:

这将返回位置为x=10,y=20的像素的颜色值。然后可以在后续的IM命令中使用输出来添加该颜色的边框。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接