ソフト:ImageMagick
Magick++とC++で画像を生成して、そこに日本語を描画させようとしたのですが、どうにも上手くいかないので、別のやり方でやってみました。ImageMagickのconvert コマンドです。
convertコマンドで日本語を描画する場合の注意点として2つあると思います。
注意点1
フォントは日本語に対応しているものをパスを含めたフォントのファイル名で指定する
注意点2
描画したい文字列はUTF-8で保存したファイルで用意する
説明だけではピンとこないので、いつくかコマンド例を示します。
成功例-フォントも文字列もきちんと指定
フォントの指定も、描画する日本語の指定も問題がない場合を以下に示します。背景は白、文字の色は黒です。
convert -background white -fill black -font "/System/Library/Fonts/ヒラギノ角ゴ ProN W3.otf" label:@input.txt text.png
-fontの後にフォントのファイルを指定します。文字列はlabelの後に@を付けてファイル名を指定します。最後に、出力する画像のファイル名を指定します。
以下の画像が生成されます(「こんにちわ」って描画されています)。
失敗例-フォントのパスが間違い
-fontに間違ったパスを指定した場合です。
convert -background white -fill black -font "ヒラギノ角ゴ ProN W3.otf" label:@input.txt text.png
これを実行すると以下のようなワーニングが出ます(text.pngは生成されます)。
convert: unable to read font `ヒラギノ角ゴ ProN W3.otf' @ warning/annotate.c/RenderType/879.
フォントファイルが読み込めませんということですね。
画像は生成されるのですが、正しく描画されません。以下のようになります(「?????」って描画されています)。
それと、フォントに関してですが、フォントを指定しなくても「?????」が生成されます。
おまけ-日本語を直接指定でもOK
私のMacはターミナルの文字コードがUTF-8だからだと思うのですが、labelに文字列を直接指定しても正しく描画されました。以下がコマンドです。
convert -background white -fill black -font "/System/Library/Fonts/ヒラギノ角ゴ ProN W3.otf" label:直接こんいちわ text.png
text.pngには「直接こんいちわ」と描画されています。この方法だとWindowの方はどうなんでしょう?やっぱり、ファイルをUTF-8で保存する方が良いのかな?