使用ImageMagic混合多张图片

6

img1 img2

我的问题是:我有几个.png文件,每个文件都有一个特定颜色的小点。所有文件的大小相同。我的问题是如何将它们叠加在一起,以便不同颜色的点会混合在一起,而且一种颜色不会完全覆盖另一种颜色?-flatten选项可以合并图像,但是在这个例子中,橙色(img1)会被棕色(img2)完全覆盖,而我希望得到混合颜色(棕色)。

我尝试过:

convert -evaluate-sequences mean -- 没有帮助

convert -layers merge -- 没有帮助

composite -blend -- 有帮助,但只能合并两个图像

感谢任何提示。


如果您展示图像和希望实现的结果,可能会有所帮助。 - Mark Setchell
1个回答

37
不确定您的图片是什么样子的,因为您只提供了两张图片,而我原本期望有两个输入图片和一个结果!所以,让我们自己制作两张图片:
convert -size 200x100 xc:none -fill black -draw "circle 80,50 130,50"  black.png
convert -size 200x100 xc:none -fill orange -draw "circle 120,50 170,50"  orange.png

enter image description here enter image description here

那我猜你想要这个:
convert orange.png black.png -compose overlay -composite result.png

enter image description here

或者您可能指的是 luminize 混合模式:

convert orange.png black.png -compose luminize  -composite result.png

enter image description here

如果你想尝试其他混合模式,可以使用以下方法:

identify -list compose

获取它们的完整列表。

Atop
Blend
Blur
Bumpmap
ChangeMask
Clear
ColorBurn
ColorDodge
Colorize
CopyAlpha
CopyBlack
CopyBlue
CopyCyan
CopyGreen
Copy
CopyMagenta
CopyRed
CopyYellow
Darken
DarkenIntensity
DivideDst
DivideSrc
Dst
Difference
Displace
Dissolve
Distort
DstAtop
DstIn
DstOut
DstOver
Exclusion
HardLight
HardMix
Hue
In
Intensity
Lighten
LightenIntensity
LinearBurn
LinearDodge
LinearLight
Luminize
Mathematics
MinusDst
MinusSrc
Modulate
ModulusAdd
ModulusSubtract
Multiply
None
Out
Overlay
Over
PegtopLight
PinLight
Plus
Replace
Saturate
Screen
SoftLight
Src
SrcAtop
SrcIn
SrcOut
SrcOver
VividLight
Xor

如果您想检查它们全部:

for b in $(identify -list compose); do convert -gravity center -pointsize 72 -label "$b" orange.png black.png -compose $b -composite  miff:- ; done | montage -geometry +0+0 miff: montage.png

enter image description here


1
我相信“-compose Blend -composite”对于OP提供的示例是有意义的。 - emcconville
3
感谢提供如此精彩的示例图片和生成代码! - Laurin Herbsthofer
1
这些混合模式中都没有我期望的默认模式:直接50%平均两个像素。白色+黑色=灰色,黑色+红色=暗红色,白色+红色=浅红色等等。我该如何实现这种类型的合成? - Myrddin Emrys
不得不说,这种高质量的回答应该成为许多人应该追求的基准。 - UrbanwarfareStudios
@UrbanwarfareStudios 谢谢。我很喜欢做这些。这里还有几个 https://dev59.com/dnRA5IYBdhLWcg3wsgFP#56220630 和 https://dev59.com/PlQK5IYBdhLWcg3wL9Bq#52307690 和 https://dev59.com/m2oy5IYBdhLWcg3wUcb_#51822265 和 https://dev59.com/EFIH5IYBdhLWcg3wWck0#60019059 和 https://dev59.com/uYjca4cB1Zd3GeqP0K1c#29011461。 - Mark Setchell
对于任何想要根据第二个文件剪裁第一个文件并保留原始图像的颜色和第二个(掩模)的形状的人,可以使用COMPOSITE_DSTIN。 - UrbanwarfareStudios

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接