mattintosh note

どこかのエンジニアモドキの備忘録

ImageMagickで同一行の一部のテキスト色を変える

"CONTAX Carl Zeiss Distagon T* 28mm F2.8" という文字列の "T*" だけを赤くしたくてしばらく調べてみたんだけど見つからなかった。Pango が使える場合は pango: で HTML で記述できるようなのでそちらを使うのが楽かも。

例えばこんな感じで label: ごとに色を指定すると label: ごとに画像が生成されてしまう。

convert \
    -fill white label:"CONTAX Carl Zeiss" \
    -fill red   label:" T* " \
    -fill white label:"28mm F2.8" \
    foo.png

そこで、個々の画像として生成された画像を最後に +append してあげる。これで一行のテキストのように見えるようになる。

convert \
    -background black \
    -pointsize 64 \
    -fill white label:"金田一少年の事件" \
    -fill Red   label:"簿" \
    +append \
    -bordercolor black \
    -border 16 \
    foo.png

複数行テキストと組み合わせる場合は -append で結合する。

convert \
    -background black \
    -pointsize 64 \
    -fill white label:"金田一少年の事件" \
    -fill Red   label:"簿" \
    +append \
    -pointsize 32 \
    -fill white label:"作画:さとうふみや" \
    -gravity center \
    -append \
    -bordercolor black \
    -border 16 \
    foo.png

※最近ネトフリで金田一少年の事件簿を見てるだけで特に大意は無いです。