【问题标题】:Create a text label with character-specific colors in ImageMagick在 ImageMagick 中创建具有特定字符颜色的文本标签
【发布时间】:2015-02-07 18:39:04
【问题描述】:

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

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

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

convert *.png -set delay 100 MOVIE.GIF

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

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

    是你的朋友。我会解析文件以提取每个颜色通道,并调整 -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
    

    我确信上面的示例可以简化为单行。请参阅this answer 在第 n 个字符处进行 sed 替换。

    【讨论】:

    • 我喜欢这个答案 :-)
    • 这是一个非常有用和彻底的答案。非常感谢!
    猜你喜欢
    • 2018-01-04
    • 2018-04-18
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2016-09-13
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多