使用 imagick 创建具有渐变颜色的线条

Create lines with gradient color using imagick

我有一个基本纹理,我想在该纹理图像上绘制多条线。线条应随机绘制在图像上的随机位置。我可以画线,但这些线的颜色应该是渐变的。

线条的颜色应该从边缘开始变浅,从中心开始变暗。我现在使用的代码如下

$draw = new \ImagickDraw();
$draw->setStrokeOpacity(0);
$draw->setStrokeColor('red');
$draw->setStrokeWidth(0);
$draw->setFillColor('red');
$draw->line(10, 30, 380, 30);
$image = new \Imagick();
$image->newImage($width * 3, $height * 2, 'rgba(0,0,0,0)');
$image->setImageFormat('png');
$image->drawImage($draw);

我希望输出像下图一样

但我只能像下面这样创建:

背景是纹理图像,线条(橙色和绿色)是我想在背景(纹理图像)上绘制的线条。

我在文档中找不到任何内容,感谢任何帮助

这是在 ImageMagick 命令行中执行此操作的一种方法。您可以将其翻译成 Imagick。

创建背景图片

convert -size 500x500 xc:gray +noise gaussian -channel g -separate +channel background.png


创建带有末端渐变的一维红线图像

convert -size 300x1 xc:red \
\( -size 1x300 gradient: -rotate 90 -solarize 50% -level 0x50% -white-threshold 50% +write grad.png \) \
-alpha off -compose copy_opacity -composite red_grad.png


将红线图像放在背景上

convert background.png red_grad.png -geometry +100+250 -compose over -composite result.png


您可以使用-white-threshold 以外的其他方法来调整渐变alpha 通道中沿红线的透明度。