読者です 読者をやめる 読者になる 読者になる

PerlMagick×WinXPメモ

Windowsでの、PerlMagickで画像への文字差込を行ったメモ。

WinXP + ActivePerl + PerlMagickで、画像への文字差込を行った時のメモ。UNIXと結構違うせい?か、ちょっとはまった。

インストール

ActivePerl 5.6.xが使いたかったので、「:: Cepheid :: - ImageMagickのインストール」の、「補足2 ActivePerl 5.6.x環境にPerlMagickを導入する(手動でインストール)」の通りに。

「補足 ActivePerl 5.6.x環境にPerlMagickを導入する(PPMで自動インストール)」のやり方でインストールされるImage-Magickは、古すぎるの か、インストールファイルが足りないのか、Windows用でないのか、ちゃんと動作しなかった。

結局PerlMagickのダウンロードページから「PerlMagick PPM (full) 」をダウンロードして、展開。

展開後のフォルダで、以下のようにしてインストール。(Perlへのパスが通っていることを前提)

> ppm install Image-Magick.ppd

その後、以下のパスを、環境変数PATH(既存)とMAGICK_HOME(新規)へ追加する。

C:\Perl\site\lib\auto\Image\Magick

追加後、念のため再起動。

日本語文字列の差し込み

はまったAnnotateへのパラメータは、以下。

$ret = $image->Annotate(text=>$text, stroke=>$font_color,
font=>"c:/windows/fonts/sazanami-mincho.ttf",
pointsize=>$font_size,
x=>$pos_x, y=>$pos_y, encoding=>'Unicode');

encoding=>'UTF-8'とすると、"Warning 415: Unrecognized Encoding"とはねられた。その後、たまたまどこかで見つけたencoding指定一覧に"Unicode"があったので、指定してみると成功。

フォントは、さざなみフォントを使用。日本語フォントや追加フォントは、フルパスで指定してやる必要あり。~ さざなみフォント、なぜか12~20ポイントを指すると、でperl.exeが不正終了するので、もう少し大き目のフォントで差し込んだ後、縮小処理(Resize)するように。

差し込む文字列は、以下みたく、事前にUTF-8変換が必要。

$text = jcode($line)->utf8;

スクリプトファイル自体をUTF-8で保存してもよいらしい。また、Shift-JISで保存すると、例えば「自」の文字などが文字化けするので、EUCで保存して、実行時に文字をUTF-8に変換してもよい。

参考リンク