Max*_*ian 1 php image imagemagick edge-detection
我正在寻找使用 Imagemagick (通过 PHP)来处理具有透明背景和一些半透明像素(如渐变)的 PNG。图像必须像这样进行更改: 1. 将所有非透明像素设置为相同的纯色(黑色即可)
2. 将图像内形状的边缘扩展 25 个像素
这不仅仅是调整图像大小。我正在寻找类似于 Photoshop 扩展选区的功能(例如,顶部圆圈中的间隙被否定,因为它小于 25 像素扩展)。
目前,我有一些代码可以扫描图像并查找边缘,但当图像中存在多个未连接的形状时,就会失败。Imagemagick 是否有办法做到这一点,或者是否有一种算法可以用来扫描图像并生成我需要的输出?速度是一个问题,但只要它有效,我就可以接受缓慢的解决方案。
这个答案是一个正在进行的工作,我想我们可以帮助你......
基本上,您的步骤 1) 意味着您希望将整个图像的 RGB 通道设置为黑色,同时保留透明度来确定形状 - 我认为。好吧,我们可以通过很多方法做到这一点,但让我们使用这样的阈值:
convert shapes.png -threshold 100% result.png
Run Code Online (Sandbox Code Playgroud)
现在您想要扩大选择范围,但选择实际上仅在 Alpha/透明度通道中,因此我们将操作限制在该通道中,以保持速度加快。用形态学的术语来说,你正在寻找扩张,所以你可以这样做:
convert shapes.png -threshold 100% -channel A -morphology dilate octagon:25 result.png
Run Code Online (Sandbox Code Playgroud)
还有其他形状(圆盘、菱形等)和其他扩张程度(我选择了 25 种扩张) - 请参阅 Anthony Thyssen 出色的 ImageMagick 示例页面...此处。
-threshold不确定透明度的渐变是怎么回事,所以我在 alpha 通道上添加了额外的内容:
convert shapes.png -threshold 100% -channel A -morphology dilate octagon:25 -threshold 99% result.png
Run Code Online (Sandbox Code Playgroud)
我将让您将其翻译成 PHP - 应该很容易。
| 归档时间: |
|
| 查看次数: |
502 次 |
| 最近记录: |