在ImageMagick中创建具有特定字符颜色的文本标签

时间:2014-12-09 18:33:43

标签: c++ image-processing imagemagick label imagemagick-convert

我正在做一些ASCII艺术的批处理,目前有一个生成艺术的C ++应用程序。然后我通过ImageMagick通过以下命令运行文本文件:

convert -font Courier \"label:@input.txt\" output.png

最后,我通过以下命令将.PNG文件合并为一个动画GIF:

convert *.png -set delay 100 MOVIE.GIF

我想要做的是在第一步生成的#标签文件中将所有*字符设为绿色,所有.PNG字符为红色等。我该怎么做?

此外,是否可以将第n个字符设置为特定颜色而不是使用上述图案?一个例子是在文本段落中绘制HSV谱或任意颜色模式。

谢谢。

1 个答案:

答案 0 :(得分:2)

是你的朋友。我会解析文件以提取每个颜色通道,并调整-fill标志

cat > input.txt <<EOF
#############
# * * * * * #
#* * * * * *#
#############
this is black
EOF
cat input.txt | sed 's/[\#\*]/ /g' > input.black.txt
cat input.txt | sed 's/[^\#]/ /g' > input.green.txt
cat input.txt | sed 's/[^\*]/ /g' > input.red.txt
convert -background transparent -font Courier \
        -fill black label:@input.black.txt \
        -fill green label:@input.green.txt \
        -fill red label:@input.red.txt \
        -flatten output.png

Character-specific colors in ImageMagick

我确定上面的例子可以简化为单行。有关第n个字符的sed替换,请参阅this answer