2006年02月09日
フリーフォント利用
ダウンロード
font.txt
( 使用可能なサイトを http:// からの文字列で指定します。ディレクトリを含んでもいいです )
font.php
font.txt
( 使用可能なサイトを http:// からの文字列で指定します。ディレクトリを含んでもいいです )
http://winofsql.jp http://lightbox.sblo.jp http://webase.winofsql.jp
font.php
<? # *********************************************************** # このソースコードは、shift_jis で記述されています # *********************************************************** header("Content-type: image/png"); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); # *********************************************************** # この php からのフォントの相対位置( 最後に / を入れる ) # *********************************************************** $font_path = "../../php/"; # *********************************************************** # キャラクタセット変換用 # *********************************************************** mb_language( "ja" ); mb_internal_encoding("EUC-JP"); # *********************************************************** # デフォルトのキャラクタセット # キャラクタセットは SJIS,EUC-JP,UTF-8 が一般的 # *********************************************************** if ( $_GET['cset'] == '' ) { $_GET['cset'] = 'SJIS'; } # *********************************************************** # リファラチェック # font.txt に 対象ドメインを列挙する # *********************************************************** $Site = FALSE; $file = file( "font.txt" ); for( $i = 0; $i < count( $file ); $i++ ) { # 改行削除 $target = rtrim( $file[$i] ); # 空行は無視 if ( $target == "" ) { continue; } # コメント文字 if ( substr( $target, 0, 1 ) == ";" ) { continue; } $len = strlen( $target ); $ref = substr( $_SERVER['HTTP_REFERER'], 0, $len ); if ( $target == $ref ) { $Site = TRUE; break; } } if ( !$Site ) { $img_text = "can't use"; } else { $_GET['cset'] = strtoupper( $_GET['cset'] ); // PHP が行う自動的な変換を元に戻す if ( $_GET['cset'] == 'SJIS' ) { $_GET['text'] = str_replace("\\\\", "\\", $_GET['text'] ); } $_GET['text'] = str_replace("\\'", "'", $_GET['text'] ); $_GET['text'] = str_replace("\\\"", "\"", $_GET['text'] ); // テキストは UTF-8 に変換する if ( $_GET['cset'] != 'UTF-8' ) { $_GET['text'] = mb_convert_encoding($_GET['text'],"UTF-8",$_GET['cset']); } $img_text = $_GET['text']; } # *********************************************************** # デフォルトのパラメータ値 # *********************************************************** if ( $_GET['a'] == '' ) { $_GET['a'] = 0; } if ( $_GET['s'] == '' ) { $_GET['s'] = 32; } if ( $_GET['w'] == '' ) { $_GET['w'] = 400; } if ( $_GET['h'] == '' ) { $_GET['h'] = 100; } if ( $_GET['x'] == '' ) { $_GET['x'] = 0; } if ( $_GET['y'] == '' ) { $_GET['y'] = 50; } # *********************************************************** # 画像の大きさ # *********************************************************** $im = imagecreate($_GET['w'],$_GET['h']); # *********************************************************** # 画像の背景色 # imagecolorallocate() の最初のコールで背景色がセットされます # *********************************************************** $white = imagecolorallocate($im, 255,255,255); # *********************************************************** # 画像の文字色 # *********************************************************** $black = imagecolorallocate($im, 0,0,0); # *********************************************************** # フォントを使用した文字の画像化 # *********************************************************** imagettftext( $im, $_GET['s'], $_GET['a'], $_GET['x'], $_GET['y'], $black, "$font_path{$_GET['font']}.ttf", $img_text); # *********************************************************** # PNG 出力 # *********************************************************** imagepng($im); # *********************************************************** # 終了処理 # *********************************************************** imagecolordeallocate( $im, $black ); imagecolordeallocate( $im, $white ); imagedestroy($im); # *********************************************************** # パラメータ説明 # *********************************************************** # font # ttf フォントの名前 ( 必須 ) # # text # 画像化したいテキスト文字列 # # cset # テキスト文字列のキャラクタセット # mb_convert_encoding の 3つ目の引数として渡される PHP で有効な # エンコーディング文字列 # # w, h # 画像の幅と高さ。省略すると 400 x 100 # # s # フォントサイズ。GD のバージョンに依存し、ピクセルサイズ (GD1) # もしくはポイントサイズ (GD2) で指定する必要があります。 # # a # 度で表される角度。0 度は左から右にテキストを読む方向になります。 # 0 より大きな値は、時計廻りの回転を表現します。例えば、90 とい # う値は下から上にテキストを読む方向になります。 # # x # x と y で与えられた座標は、最初の文字のベースポイント # (ほぼ文字の左下角) を定義します。 この仕様は、x と y # で最初の文字の右上角を定義する imagestring() と異なっています。 # 例えば、左上は 0, 0 となります。 # # y # y 座標。これは文字の最下位置ではなく、フォントペースラインの # 位置を指定します。 # *********************************************************** ?>