如何拉伸带有 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"
我有一个带有 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"