ふと興味がわいたので、試してみました。
幸い、PNG画像データ生成はPHPの再コンパイルなど無しに出来たので、オプションの意味を理解するだけで使う事が出来ました。
サンプル
マニュアルのサンプルコードを参考に、『表示出来ればよし』まで。ファイルを作りたくなかったので、dataスキームで表示させています。ブラウザによって表示出来ませんが、あしからず。
以下、メモ。
- フォントファイルまでのパスを、font_pathとfont_fileで指定
- font_pathとfont_fileは単純に連結される(パスの正規化などはしてくれない)
- なぜか、Imageドライバのinitメソッドに渡す引数が第1・第2ともにwidth(可変引数で渡した場合)
- TTFが手元にあって、TTFからPNGを作れる(PHP)環境ならすぐ試す事が出来る
最後に、サンプルのコードを。
<?php /** * @see <http://pear.php.net/manual/en/package.text.text-captcha.php#package.text.text-captcha.example> * * - 以下のコードは上記ページに掲載されているコードを改変したコードです。 */ require_once 'Text/CAPTCHA.php'; /** * オプション設定 * * - Text_CAPTCHA::factoryメソッドによって作られるドライバのinitメソッドに渡す * - Imageドライバのinitメソッドは可変引数に対応している * - ただし、第1、第2引数がともにwidthであるので、連想配列で渡す事にする * - フォントファイルは読み込み可能な場所においてある必要がある * - font_pathとfont_fileを単純に連結するため、パスの指定には注意 */ $options = array( 'width' => 300, 'height' => 130, 'phrase' => null, 'imageOptions' => array( 'font_size' => 36, 'font_path' => './fonts/', 'font_file' => 'sazanami-gothic.ttf' ), ); /** * ドライバを作成して初期化 * * - Imageドライバを選択 * - 先に設定したオプションを利用して初期化 * - PEAR::isErrorでエラー処理 */ $c = Text_CAPTCHA::factory('Image'); $retval = $c->init($options); if (PEAR::isError($retval)) { echo '<h1>Error generating CAPTCHA!</h1>'; echo '<div>' . $retval->getMessage() . '</div>'; exit; } /** * CAPTCHA画像をPNG形式で生成 * * - PEAR::isErrorでエラー処理 */ $png = $c->getCAPTCHAAsPNG(); if (PEAR::isError($png)) { echo '<h1>Error generating CAPTCHA!</h1>'; echo '<div>' . $png->getMessage() . '</div>'; exit; } /** * 文字をテキストとして取得可能 */ echo "<h1>Answer: " . $c->getPhrase() . "</h1>"; /** * 生成した画像データをdataスキームで表示 */ echo "<img src=\"data:image/png;base64," . base64_encode($png) . "\" />"; ?>
ちなみに、今回のサンプル内で利用しているフォントは、SourceForge.jp: Project Info - efontで配布されているさざなみフォントです。

