如何拉伸带有 alpha 通道的图像中元素的边缘颜色?

How can I stretch the edge colors of elements in an image with alpha channel?

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

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

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

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

我不太确定图片的边缘发生了什么,但这应该可以帮助您入门...

首先,我 trim 关闭任何透明边缘(使用 -trim),这样我们就可以得到您想要扩展的实际图案。然后克隆图像并处理除顶行像素之外的所有内容(-crop)。然后将该行放大,直到它达到 800 像素高。然后按处理顺序(使用+swap)将高顶行与原始图像交换,并将原始图像附加到高度扩展的顶行下方。

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

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

我认为边缘是关键选项,在这个例子中,我在扭曲中将调整后的图像的大小全部缩小了 20 像素。 我不知道你如何获得倾斜的边缘 though.I 知道你不想扭曲原件,但它可能会给你一些关于如何获得你想要的结果的想法。

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"