【问题标题】:How can I stretch the edge colors of elements in an image with alpha channel?如何使用 alpha 通道拉伸图像中元素的边缘颜色?
【发布时间】:2019-09-25 05:00:15
【问题描述】:

我有一个带有 Alpha 通道的 PNG。首先我想找到 png 中的所有元素,然后我想将边框上的最后一种颜色拉伸大约 5 到 10 个像素

拉伸必须从图像上每个对象的中心向所有方向进行(如三角形、矩形...)

保持边缘上每个像素的颜色很重要

这可能吗?未来的目标是使用 ImageMagick 实现流程自动化。

【问题讨论】:

    标签: image colors imagemagick border edge-detection


    【解决方案1】:

    我玩过扭曲,这可能是要走的路,但需要更多调查。我正在处理一个较小的图像,代码基本上是一个概念证明。

    我认为边缘是关键选项,在这个例子中,我在扭曲中将调整大小的图像的大小缩小了 20 像素。 不过,我不知道您将如何获得有角度的边缘。我知道您不想扭曲原件,但它可能会给您一些关于如何获得所需结果的想法。

    convert "1.png" -trim -matte -virtual-pixel edge -mattecolor none -interpolate Spline +distort BilinearForward "0,0 20,20 400,0 380,20 400,95 380,55 0,95  20,55" -trim +repage "result.png"
    

    【讨论】:

      【解决方案2】:

      我不太确定图像边缘发生了什么,但这应该可以帮助您开始...

      首先,我修剪掉所有透明边缘(使用-trim),以便我们得到您想要扩展的实际图案。然后克隆图像并处理除第一行像素之外的所有内容(使用-crop)。然后将该行放大到 800 像素高。然后按照处理顺序(使用+swap)将高顶行与原始图像交换,并将原始图像附加到高度扩展的顶行下方。

      convert cells.png -trim +repage \( +clone -crop x1+0+0 -scale x800! \) +swap -append result.png
      

      【讨论】:

      • 嗨,马克,谢谢,看起来已经很不错了。最终图像看起来像这样(用 PS 制作)。 kohlhas-3d.de/3.jpg 是否可以像第一行那样自动拉伸所有边缘?我的意思是所有的三角。非常感谢!
      • 只需旋转三角形直到下边位于顶部,然后重复上述过程 - 两次。
      • 好的,我明白了。不幸的是,三角形的边不是直的而是弯曲的。我们必须制定一个工作流程,解决包含 8 个三角形和一个矩形的图像的问题。有机会吗?
      • 现在我确信我曾经错误地做过这样的事情,但不记得怎么做了。我认为它可能有失真。
      • 谢谢!我们将尝试使用扭曲,也许这将是正确的方法。
      猜你喜欢
      • 2021-01-14
      • 1970-01-01
      • 2021-11-05
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多