如何使用图像魔术将图像淡化为蓝色?

How to fade images to blue with image magic?

很像这个问题3,我试图实现淡入淡出但颜色不变而不是淡入透明,如何在所有边缘淡入淡出,变成蓝色而不是透明? 我尝试了以下方法:

convert doge.png -alpha set -virtual-pixel transparent -background blue  -channel A -morphology Distance Euclidean:1,20\! +channel _doge.png
convert doge.png -alpha set -virtual-pixel Blue  -channel A -morphology Distance Euclidean:1,20\! +channel _doge.png

未成功。我还考虑了小插图 4,事实证明它会在我非常矩形的图像上产生非常拉伸的椭圆形,使它们没有吸引力,因此我需要将渐变保持为黑色矩形,如果我可以使用这种渐变来产生渐变变黑就够了。

使用第一个命令我得到了这个,之前和之后: , 第二个命令因以下错误而出错:

convert: unrecognized virtual pixel method `Blue' @ error/convert.c/ConvertImageCommand/3177.

您在 Alpha 通道上进行形态学处理,但只在红色和绿色通道上进行处理。

 convert doge.png -alpha set -virtual-pixel transparent -background blue \
         -channel RG -morphology Distance Euclidean:1,20\! +channel _doge.png

您可以在 Imagemagick 6 中执行以下操作。我创建了一个黑色图像并线性模糊边缘,而不是通过高斯模糊。然后我将其用作遮罩,将图像与蓝色图像混合以生成结果。

convert doge.png \
\( -clone 0 -fill blue -colorize 100 \) \
\( -clone 0 -fill black -colorize 100 -virtual-pixel white -blur 100x65000 \) \
-compose over -composite \
result.png


您还可以使用类似高斯的模糊,如下所示:

convert doge.png \
\( -clone 0 -fill blue -colorize 100 \) \
\( -clone 0 -fill black -colorize 100 -virtual-pixel white -blur 0x50 \) \
-compose over -composite \
result2.png


这是一个较小的模糊距离:

convert doge.png \
\( -clone 0 -fill blue -colorize 100 \) \
\( -clone 0 -fill black -colorize 100 -virtual-pixel white -blur 20x65000 \) \
-compose over -composite \
result3.png


如果你想要更深的蓝色,那么你可以用 -level 运算符来控制它:

convert doge.png \
\( -clone 0 -fill blue -colorize 100 \) \
\( -clone 0 -fill black -colorize 100 -virtual-pixel white -blur 20x65000 -level 0x50% \) \
-compose over -composite \
result4.png


对于 Imagemagick 7,使用 magick 而不是 convert。

emcconville 出色的 Imagemagick 答案的一个细微变化是保持透明度并仅对蓝色变平。

convert doge.png \
-alpha set -virtual-pixel transparent -channel A -morphology Distance Euclidean:1,20\! +channel  \
-background blue -compose over -flatten \
result.png


上面提供了几个很好的答案,但这里有一个稍微不同的方法。读取输入图像,克隆它,将其着色为黑色,将其修整一些并添加蓝色边框,使黑色透明,模糊蓝色边框,然后将其合成到原始输入上。命令可能看起来像这样...

convert input.png -bordercolor blue -fill black \
   \( +clone -colorize 100 -shave 10 -border 10 \
   -transparent black -blur 0x10 \) -composite result.png