サンプル・プログラムの実行例
サンプル・プログラム
たとえば Apache + PHP の環境であれば、
<!--#include virtual="ascii2image.php?s=hogehoge.pahoo.org" -->のように記述することで、Webページに画像化したテキストを埋め込んでくれる。
| ascii2image.php | サンプル・プログラム本体。 |
| pahooInputData.php | データ入力に関わる関数群。 使い方は「PHPでGET/POSTでフォームから値を受け取る」「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 3.1.0 | 2022/06/27 | PHP 8.5対応 |
| 3.0.1 | 2022/06/27 | FastCGIで正常動作しない不具合を修正 |
| 3.0.0 | 2022/05/23 | pahooInputData.php分離,PHP8対応 |
| 2.0.2 | 2018/12/30 | 余計なコードを削除 |
| 2.0.1 | 2016/01/09 | ヘルプ修正 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.0.1 | 2025/08/11 | getParam() bug-fix |
| 2.0.0 | 2025/08/11 | pahooLoadEnv() 追加 |
| 1.9.0 | 2025/07/26 | getParam() 引数に$trim追加 |
| 1.8.1 | 2025/03/15 | validRegexPattern() debug |
| 1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
準備
ascii2image.php
59: // 各種定数(START) ===========================================================
60:
61: // 表示幅(ピクセル)
62: define('WIDTH', 600);
63:
64: // テキスト(初期値)
65: define('DEF_TEXT', 'hoge@pahoo.org');
66:
67: // テキスト(最小長)
68: define('MIN_LEN_TEXT', 1);
69:
70: // テキスト(最小長)
71: define('MAX_LEN_TEXT', 30);
72:
73: // テキスト(許容パターン)
74: define('PAT_TEXT', '/^[\x20-\x7E]+$/');
75:
76: // フォント・ファイルの名称、配置位置
77: $FontTable = array(
78: array('VLゴシック', '../../../../common/font/VL-PGothic-Regular.ttf'),
79: array('Throw My Hands Up in the Air', '../../../../common/font/ThrowMyHandsUpintheAir.ttf'),
80: );
81:
82: // 各種定数(END) ===============================================================
今回は、描画用フォントとして「VLゴシックフォントファミリ」と「Throw My Hands Up in the Air」の2種類を選択できるようにした。後者は手書き風フォントであり、OCRによる解析を回避する役に立つだろう。
使用するフォントを変更したり増やしたいときは、配列変数 $FontTable を編集して欲しい。
その他、入力バリデーションに必要なパラメータを定数で用意している。これらも自由に変更できる。
準備:pahooInputData 関数群
また、各種クラウドサービスに登録したときに取得するアカウント情報、アプリケーションパスワードなどを登録した .pahooEnv ファイルから読み込む関数 pahooLoadEnv を備えている。こちらについては、「各種クラウド連携サービス(WebAPI)の登録方法」をご覧いただきたい。
解説:ASCII文字を画像に変換
ascii2image.php
143: /**
144: * ASCII文字を画像に変換
145: * @param int $mode 0=画面出力,1=画像出力
146: * @param int $font 0|1(フォントの種類)
147: * @param string $str ASCII文字列(UTF-8)
148: * @return string BASE64
149: */
150: function ascii2image($mode, $font, $str) {
151: global $FontTable;
152:
153: if ($str == '') return '';
154:
155: $res = '';
156: $size = 20;
157: $arr = imagettfbbox($size, 0, $FontTable[$font][1], $str); // サイズ取得
158: $im = imagecreate($arr[4] - $arr[6] + 5, $arr[1] - $arr[7] + 5);
159: // イメージストリーム作成
160: $bgcolor = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); // 背景色
161: imagecolortransparent($im, $bgcolor); // 透明化
162: $color = imagecolorallocate($im, 0x00, 0x00, 0xCC); // 文字色
163: imagettftext($im, $size, 0, -$arr[6], -$arr[7], $color, $FontTable[$font][1], $str); // 出力
164:
165: if ($mode == 1) {
166: header("Content-type: image/png"); // MIMEはPNGで
167: imagepng($im); // ブラウザ表示
168: } else {
169: ob_start();
170: imagepng($im); // ブラウザ表示
171: $res = base64_encode(ob_get_clean());
172: }
173: // PHP8.5:非推奨関数
174: if (PHP_VERSION_ID < 80500) {
175: imagedestroy($im);
176: }
177:
178: return $res;
179: }
参考サイト
- PHPでTrueTypeフォントを利用する:ぱふぅ家のホームページ
- GD関数:PHP公式

そうした被害を避けるため、メールアドレスを画像化しておこう。正規ユーザーには迷惑をかけるが、自己防衛のためにやむを得ないことである。
(2026年3月15日)PHP 8.5対応