PHP と TrueType フォントで文字列を画像化する

Posted by
ぴろり
Posted at
2015/09/09 13:10
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
開発メモ カテゴリ
カバーイメージ
  • zmap
  • Photo by jegb
    • CreativeCommons
    • Attribution
    • NonCommercial
    • NoDerivs

 PHP において、入力されたテキスト データ(文字列)を、TrueType フォントを用いて描画する方法の覚書き。TrueType フォントからテキスト データのグリフをビットマップで取得します。

このエントリーをはてなブックマークに追加  

ソースコード

 PHP マニュアルの imagettftext 関数に掲載されているサンプル コードほとんどそのままです。

<?php
// 背景となる画像をファイルから読込む
$im = ImageCreateFromJPEG( 'sample.jpg' );

// 描画する文字列
$text = $_GET['text'];
// テキストを描画するための色を割り当てる
$color = imagecolorallocate( $im, 63, 63, 255 );
// テキストを描画するために利用する TrueType フォント ファイルのパス
$font = './jiyucho.ttf';
// いざ、描画
imagettftext( $im, 30, 0, 30,60, $color, $font, $text );

// Content-Type を設定して、画像データを出力
header( 'Content-Type: image/png' );
ImagePNG( $im );

// 後始末
imagecolordeallocate( $color );
imagedestroy( $im );
?>

解説

3 行目
 画像ファイル sample.jpg を読み込んで、描画のための土台となる画像リソースを取得します。
6 行目
 描画する文字列をクエリ引数から取得します。UTF-8 エンコードされた日本語も可能、%0D%0A で改行もできます。
8 行目
 文字列を描画するための色リソースを生成します。
10 行目
 文字列を描画するための TrueType フォントを指定します。サンプルにあるようにファイル名だけ指定した場合はダメでした。おそらく、相対/絶対パスを指定しないと、PHP 規定のフォント ディレクトリ(?)を探すだけで、カレント パスは探さないのかも。
12 行目
 ここまでで準備したリソースを用いて、いざ、文字列を描画します。各パラメータについてはマニュアルを参照のこと。
15~16 行目
 加工した画像をブラウザに出力する段。元は JPEG 画像ですが、PNG で出力しています。
19~20 行目
 生成したリソースを忘れずに解放。解放を忘れるとメモリ リークすると思いますが、どれくらいの頻度でリークして、どんな悪さをするかは調べていません。
このエントリーをはてなブックマークに追加  


この記事を読んだ人はこんな記事も読んでいます記事リコメンデーションについて

カバー画像:タグの並び順をわかりやすく変更できる Mozilla Thunderbird アドオン:TagSequenceArranger

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。