【问题标题】:Trim image background but leave padding in Graphicsmagick修剪图像背景但在 Graphicsmagick 中保留填充
【发布时间】:2013-06-30 10:09:53
【问题描述】:

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

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

但使用修剪过的颜色而不是白色。如何做到这一点?

【问题讨论】:

    标签: php image-processing graphicsmagick


    【解决方案1】:

    这对我有用。

    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,边缘周围有伪影。
    【解决方案2】:

    GraphicsMagick 目前似乎无法做到这一点(在撰写本文时:GM v1.4 beta)。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 2012-04-28
      • 2016-02-12
      • 2019-01-28
      • 1970-01-01
      相关资源
      最近更新 更多