使用 Imagemagick 复制 photoshop 的 "expand selection" 功能
Using Imagemagick to replicate photoshop's "expand selection" functionality
我希望使用 Imagemagick(通过 PHP)处理具有透明背景和一些半透明像素(如渐变)的 PNG。必须像这样更改图像:
1.使所有非透明像素相同,纯色(黑色可以)
2. 将图像内形状的边缘扩大 25 像素
有了这个输入(透明BG,一些像素是半透明的):
我期望这样的输出:
这不仅仅是调整图像大小。我正在寻找类似于 photoshop 扩展选区的功能(例如,顶部圆圈中的间隙被取消,因为它小于 25 像素扩展)。
目前,我有扫描图像并找到边缘的代码,但当图像中存在多个未连接的形状时会失败。 Imagemagick 是否有办法做到这一点,或者是否有一种算法可以用来扫描图像并生成我需要的输出?速度 是 的一个问题,但我可以接受一个缓慢的解决方案,只要它有效。
这个答案正在进行中,我想我们可以帮助你...
基本上,您的步骤 1) 意味着您想要将整个图像的 RGB 通道设置为黑色,同时保留透明度来确定形状 - 我认为。好吧,我们可以通过多种方式做到这一点,但让我们使用这样的阈值:
convert shapes.png -threshold 100% result.png
现在您想扩大选择范围,但选择范围仅在 Alpha/transparency 通道中,因此我们将操作限制在该通道以保持速度。用形态学术语来说,你正在寻找膨胀,所以你可以这样做:
convert shapes.png -threshold 100% -channel A -morphology dilate octagon:25 result.png
还有其他形状(圆盘、菱形等)和其他扩张度数(我选择了 25 次扩张)- 看看 Anthony Thyssen 出色的 ImageMagick 示例页面... here.
不确定透明度的渐变是怎么回事,所以我在 alpha 通道上用额外的 -threshold
对它们进行了处理:
convert shapes.png -threshold 100% -channel A -morphology dilate octagon:25 -threshold 99% result.png
我会让你把它翻译成 PHP - 应该很容易。
我希望使用 Imagemagick(通过 PHP)处理具有透明背景和一些半透明像素(如渐变)的 PNG。必须像这样更改图像:
1.使所有非透明像素相同,纯色(黑色可以)
2. 将图像内形状的边缘扩大 25 像素
有了这个输入(透明BG,一些像素是半透明的):
我期望这样的输出:
这不仅仅是调整图像大小。我正在寻找类似于 photoshop 扩展选区的功能(例如,顶部圆圈中的间隙被取消,因为它小于 25 像素扩展)。
目前,我有扫描图像并找到边缘的代码,但当图像中存在多个未连接的形状时会失败。 Imagemagick 是否有办法做到这一点,或者是否有一种算法可以用来扫描图像并生成我需要的输出?速度 是 的一个问题,但我可以接受一个缓慢的解决方案,只要它有效。
这个答案正在进行中,我想我们可以帮助你...
基本上,您的步骤 1) 意味着您想要将整个图像的 RGB 通道设置为黑色,同时保留透明度来确定形状 - 我认为。好吧,我们可以通过多种方式做到这一点,但让我们使用这样的阈值:
convert shapes.png -threshold 100% result.png
现在您想扩大选择范围,但选择范围仅在 Alpha/transparency 通道中,因此我们将操作限制在该通道以保持速度。用形态学术语来说,你正在寻找膨胀,所以你可以这样做:
convert shapes.png -threshold 100% -channel A -morphology dilate octagon:25 result.png
还有其他形状(圆盘、菱形等)和其他扩张度数(我选择了 25 次扩张)- 看看 Anthony Thyssen 出色的 ImageMagick 示例页面... here.
不确定透明度的渐变是怎么回事,所以我在 alpha 通道上用额外的 -threshold
对它们进行了处理:
convert shapes.png -threshold 100% -channel A -morphology dilate octagon:25 -threshold 99% result.png
我会让你把它翻译成 PHP - 应该很容易。