ImageMagick:将两个图像组合成 R/G 个通道并创建一个白色 B 通道

ImageMagick: Combine two images into R/G channels and create a white B channel

我有一组法线贴图,它们被分成红色和绿色通道以进行放大。现在我想将它们与纯白色蓝色通道重新组合,但我正在努力寻找一种有效的方法来制作该白色蓝色通道。

我当前的代码确实有效:

magick "file_r.png" "file_g.png" ( -size 2048x2048 xc:white ) -combine "file.png"

但是必须为蓝色通道创建该图像似乎并不理想。有没有更好的方法?

(而且大小不是静态的,所以每次都必须检索它——完全可行,因为它是由 powershell 脚本运行,我可以在至少 运行 一个识别命令(magick identify -ping -format "%[w]x%[h]" "file_r.png",我担心这可能是遗留代码,但无法弄清楚如何将其转换为 v7)预先生成尺寸,但它似乎更多的开销。(我还尝试在 -size 之后放置一个识别命令以动态地将尺寸放入命令中,但我无法正确使用语法。它也不一定解决效率问题,但如果有办法我很想知道!))


This thread 在遗留 ImageMagick 论坛上似乎是一个更好的解决方案:它说 -channel 未定义的任何通道都会变成 -background 颜色,在我看来它会效率更高,因为它不必创建图像 (我可能是错的,它可能在内部做完全相同的事情)。这是他们的代码:

convert r.jpg g.jpg -background black -channel RG -combine combined.jpg

但是当我尝试时,红色和绿色通道是完美的,但蓝色通道也有红色文件的图像而不是纯白色:

magick "file_r.png" "file_g.png" -background white -channel RG -combine "file.png"

此行为在版本 7 中是否发生了变化,或者(更有可能)我做错了吗?输入文件是 sRGB 而不是灰色,因为这是升频器输出的;也许红色通道图像的蓝色通道(与其他通道相同,因为它最初是灰色的)被放在那里了?我通过尝试为输入指定两个图像的各个通道来尝试使用该命令,但我无法让它工作(这可能是我的语法;我是 ImageMagick 的新手,我一直在努力它的命令甚至带有文档)。

谢谢!

也许这就是您想要的 ImageMagick。

magick r.png g.png g.png -combine -channel b -evaluate set 100% +channel result.png