Line 11: -composite
<
如果您对此不熟悉,这里有一个额外的提示。
您可以插入
+write output-destination
(几乎)可以在命令行的任何位置插入+write
操作符——甚至可以插入多次。然后write
操作符将以其当前处理状态,将当前加载的图像(或当前加载的图像序列)写入给定的输出目标。
此输出目标可以是文件,也可以是show:
或其他IM输出支持的内容。在输出后,原始命令的处理将恢复并继续执行。
当然,只有在第一张(或其他任何)图像(序列)操作符之后(而不是任何图像设置之后),才有意义插入+write
操作符——否则当前图像列表将没有改变。
如果存在多个输出图像(因为当前图像列表包含多个图像),则ImageMagick会自动为相应的文件名分配索引号。
这是一个很棒的技巧!如果您开始将其用于自己的ImageMagick命令开发中,您很快就会发现它是不可或缺的。它有助于调试(或优化、简化……)复杂的命令设置。
6.带适当+write filename
的修改后的命令行
如果您想要对图像设置、图像操作和图像序列操作逐行解释进行“视觉增强”,那么运行此修改后的命令。查看每个由+write
命令创建的图像,并将其与本答案第4节中的相应解释进行比较:
convert \
original.png \
\( \
-clone 0 \
-fill "#a0132e" \
-colorize 100 \
\) \
+write 0---after-aside1.png \
\( \
-clone 0,1 \
+write 1---aside2-cloned.png \
-compose difference \
-composite \
+write 2---aside2-composite.png \
-separate \
+write 3---aside2-separate.png \
+channel \
-evaluate-sequence max \
+write 4---aside2-evaluate.png \
-auto-level \
+write 5---aside2-autolevel.png \
\) \
+write 6---after-aside2.png \
-delete 1 \
+write 7---main-after-delete.png \
-alpha off \
-compose over \
-compose copy_opacity \
-composite \
+write 8---main-composite.png \
output.png
7. 显示原始、中间和输出图像如下
好的,同时我已经在一张输入图片上运行了之前的命令。下面的图片展示了它与原始图片并排显示。也许我挑选用于测试的 original.png 并不适合与颜色 '#a0132e' 进行对比测试。但由于 @Thany 没有回应 @MarkSetchells 的评论要求提供一个示例图像,你们只能接受我的选择:
![原始(左)和输出图像(右)](https://istack.dev59.com/S6UkQ.webp)
这是使用多个 +write
添加到原始命令行的修改后的命令结果。
如预期的那样,original.png 看起来与它的克隆以及其他几个克隆图像相同。
具有相同前缀 1---
、2---
... 的多个文件名是由同一 +write
命令产生的,该命令在当前加载的图像列表中找到多个要保存的图像。
![原始图像(左上方),中间处理结果和输出图像(右下角)](https://istack.dev59.com/xZmlT.webp)
8. 给读者的练习
检查我的关于第19行被第20行无效的说法是否正确。从命令行中删除 -compose over
并测试结果是否仍然相同。
更新
我最初编写这个答案是为了详细解释 @dlemstra 给出的命令行。Dirk 的答案基于 ImageMagick 脚本 color2alpha,该脚本是由 Fred Weinhaus 编写的。我现在才更仔细地看了一下 Fred 的脚本:
Fred 的脚本提供了一些额外且非常巧妙的选项:
- 它可以指定输入图像中的任何颜色作为创建渐变 alpha 通道的基础。
- 它可以指定另一种颜色来替换输出中的 alpha 颜色。
- 它实现了一个“增益”控制,允许影响 alpha 通道中白色到黑色的过渡。
#a0132f
与#a0132e
是不同的,那么透明度应该变成多少呢?99%?22%?还是 "semi-transparent" 总是表示50%?你是在Windows 还是OSX上? - Mark Setchell