im4javaで文字を描画するときの注意

ImageMagickで文字列を描画するコマンドにlabel
があります。これをim4javaで使おうとしてハマったのでメモ。
im4javaにはlabelを指定するオプションはないみたいです。そういう時はaddRawArgsを使うのがセオリー。
IMOperation op = new IMOperation();
op.background("transparent");
op.fill("#000000");
op.pointsize(24);
op.kerning(2);
op.font("/PATH/TO/FONT");
op.addRawArgs("label:" + "Hello!!");
これはうまくいきます。フォントをちゃんと指定すれば日本語もOK。 ところが、Hello!!
をHello, world!!
に置き換えるとうまくいきません。スペースを含むとダメなんですね。
試行錯誤の結果、addRawArgsじゃなくてaddImageを使えばいいと判明。
IMOperation op = new IMOperation();
op.background("transparent");
op.fill("#000000");
op.pointsize(24);
op.kerning(2);
op.font("/PATH/TO/FONT");
// op.addRawArgs("label:" + "Hello, world!!"); // こうじゃなくて
op.addImage("label:" + "Hello, world!!"); // こうする
im4java / Discussion / Open Discussion:key:val arguments; geometry offsetでBernhard Bablokさんが
IM treats label: as an pseudo-image-format,
って書いている通りでした。知らんがな...
関連(するかもしれない)記事
おススメ