GDを利用した日本語フォントの埋め込み
PHPでGDを利用して日本語フォントを組み込んだ画像(PNG,JPG,GIF)を作成するサンプル。
左のサンプルは、GDで作成したテロップ画像(透過PNG)をFPE(Flash Presentation Engine)に読み込ませ動作させたものです。
サンプル画像(GDで作成)
まず、PHP環境の確認が必要です。
PHP環境の確認は以下のスクリプトで可能です。
スクリプトをコピー&ペーストしてファイルを作成(EUC)し、サーバへアップします。
ここではgd_info.phpとファイル名をつけて保存したこととします。
<html>
<body>
<?php
$buf_info = "";
$arrInfo = gd_info();
foreach ($arrInfo as $idx => $buf) {
if (is_bool($buf)) {
$buf_info .= "<p>" .htmlspecialchars("[$idx] ==>> " .($buf ? "OK" : "No Support")) ."</p>";
} else {
$buf_info .= "<p>" .htmlspecialchars("[$idx] ==>> $buf") ."</p>";
}
}
echo $buf_info;
?>
</body>
</html>
ブラウザでgd_info.phpへアクセスすると以下の様な情報が表示されます。
[GD Version] ==>> bundled (2.0.28 compatible)
[FreeType Support] ==>> OK
[FreeType Linkage] ==>> with freetype
[T1Lib Support] ==>> No Support
[GIF Read Support] ==>> OK
[GIF Create Support] ==>> OK
[JPG Support] ==>> OK
[PNG Support] ==>> OK
[WBMP Support] ==>> OK
[XBM Support] ==>> OK
[JIS-mapped Japanese Font Support] ==>> No Support
上記と同様の内容であればTTFフォントを画像ファイルへ動的に組み込めます。
『No Support』と表記されている箇所がお使いのサーバでサポートされていない機能となります。
次に実際に日本語フォントを組み込むスクリプトサンプルを実行します。
スクリプトをコピー&ペーストしてファイルを作成(EUC)し、サーバへアップします。
ここではImageTTFText.phpとファイル名をつけて保存したこととします。
TTFフォントのアップも忘れずに行って下さい。
当サンプルではM+ OUTLINE FONTSさんのmplus-1p-black.ttfを利用させて頂いてます。
<?php
Header ("Content-type: image/png");
// 動作確認済み環境
// Windosw PHP 4.4.4 EUC環境
// FreeBSD? PHP 4.4.2 EUC環境
//フォントサイズ
$font_size = 20;
//角度
$font_angle = 0;
//TTFフォントのパス(適時利用するフォントへ変更)
$font_path = "./mplus-1p-black.ttf";
//組込み位置(X座標)
$tx = 10;
//組込み位置(Y座標)
//左下角が基準点になることに注意
$ty = 25;
//組み込みテキスト
$org_text = "やいびーん";
//GD環境情報取得
$arrInfo = gd_info();
if ($arrInfo['JIS-mapped Japanese Font Support']) {
//GDが対応している場合はUTF-8への変換は不要
$telop_text = $org_text;
} else {
//組込みテキスト
//GDが対応していない場合はUTF-8へ変換して処理を行う
//UTF-8に変換しない場合、文字化けします。
$telop_text = mb_convert_encoding($org_text,"UTF-8","auto");
}
//イメージ描画枠作成
$im = ImageCreate(400, 30);
//背景色
$background = ImageColorAllocate ($im, 200, 200, 200);
//テキストカラー
$font_color = ImageColorAllocate ($im, 0, 0, 0);
//テキスト描画
ImageTTFText ($im, $font_size, $font_angle, $tx, $ty, $font_color, $font_path, $telop_text);
//PNG形式で標準出力へ
Imagepng ($im);
//イメージ破棄(メモリ開放)
ImageDestroy ($im);
?>
ブラウザでImageTTFText.phpへアクセスすると日本語フォントを組み込んだPNG画像が表示されます。
日本語フォント(TTF)を組み込んだ画像生成に注意する点は
・GDがFreeType Supportの状態であること。
・JIS-mapped Japanese Font SupportがOK(TRUE)の場合とNo Support(FALSE)の場合でUTF-8への変換が必要であるか?をチェックすること。
この2点だと思います。
