フリーフォントの利用

  font.php



imagettftext 関数 に渡されるテキストは UTF-8 である必要があります。
( Nifty Lacoocan PHP5 では、何故か EUC-JP のようです )

mbstring.encoding_translation = On の場合は、
入力 URL エンコードされたキャラクタセットが何であれ、内部文字エンコーディングへの変換が行われます

よってその場合は、
mb_language( "ja" );
mb_internal_encoding("EUC-JP");
$img_text = mb_convert_encoding($_GET['text'],"UTF-8","EUC-JP");
で正しく動作するはずです。

しかし、
mbstring.encoding_translation = On で無い場合は( デフォルト )
入力エンコードにあわせたデコードをする必要があります

また、JavaScript から呼ばれる JavaScript の encodeURIComponent でエンコードされる
Ajax の場合は、
mb_language( "ja" );
mb_internal_encoding("EUC-JP");
$img_text = $_GET['text'];

でかまいません。

  
<?
# ***********************************************************
#
# パラメータ説明
# ( このソースコードは、euc-jp で記述されています )
#
# ***********************************************************
#
# font ( $_GET['font'] )
# ttf フォントの名前 ( 必須 )
#
# text ( $_GET['text'] )
# 画像化したいテキスト文字列
# UTF-8 文字列を URL エンコード したもの
#
# w, h
# 画像の幅と高さ。省略すると 400 x 100
#
# s
# フォントサイズ。GD のバージョンに依存し、ピクセルサイズ (GD1)
# もしくはポイントサイズ (GD2) で指定する必要があります。 
#
# a
# 度で表される角度。0 度は左から右にテキストを読む方向になります。
# 0 より大きな値は、時計廻りの回転を表現します。例えば、90 とい
# う値は下から上にテキストを読む方向になります。 
#
# x
# x と y で与えられた座標は、最初の文字のベースポイント 
# (ほぼ文字の左下角) を定義します。 この仕様は、x と y 
# で最初の文字の右上角を定義する imagestring() と異なっています。 
# 例えば、左上は 0, 0 となります。
#
# y
# y 座標。これは文字の最下位置ではなく、フォントペースラインの
# 位置を指定します。 
# ***********************************************************
header("Content-type: image/png");
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );

# ***********************************************************
# この php からのフォントの相対位置( 最後に / を入れる )
# ***********************************************************
$font_path = "../";

# ***********************************************************
# キャラクタセット変換用
# ***********************************************************
mb_language( "ja" );
mb_internal_encoding("EUC-JP");

$img_text = mb_convert_encoding($_GET['text'],"UTF-8","EUC-JP");

# ***********************************************************
# デフォルトのパラメータ値
# ***********************************************************
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;
}



# ***********************************************************
# 画像の大きさ
#
# ※ オプションとして、$_GET['img'] に PNG ファイルを
# 指定できます
# ***********************************************************
if ( $_GET['img'] != '' ) {
	$im = @imagecreatefrompng( $_GET['img'] );
	if (!$im) {
		$im = imagecreate($_GET['w'],$_GET['h']);
	}
}
else {
	$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);
?>
  





  JavaScript で UTF-8 の URL エンコード





  
<SCRIPT language="JavaScript">

function ChecgeToUtf8UrlEncode() {
	var strValue = document.getElementsByName("fromString")[0].value;
	strValue = encodeURIComponent(strValue);
	document.getElementsByName("toUtf8")[0].value = strValue;
}

</SCRIPT>
<INPUT type=button value="変換" onClick='ChecgeToUtf8UrlEncode()'><br />
<TEXTAREA name=fromString cols=80 rows=5></TEXTAREA>
<br />
<TEXTAREA name=toUtf8 cols=80 rows=5></TEXTAREA>
<br />
  



  PHP で Shift_JIS の URL エンコード



  
<?
foreach( $_GET as $Key => $Value ) {
	$_GET[$Key] = str_replace("\\\\", "\\", $Value );
	$_GET[$Key] = str_replace("\\'", "'", $_GET[$Key] );
	$_GET[$Key] = str_replace("\\\"", "\"", $_GET[$Key] );
}
?>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
</HEAD>
<BODY leftmargin=0 topmargin=0>

<FORM>
<INPUT type=submit value="変換"><br />
<TEXTAREA
	name="fromString"
	cols=80
	rows=5><?= $_GET['fromString'] ?></TEXTAREA>
<br />
<TEXTAREA
	name="toSjis"
	cols=80
	rows=5><? print urlencode($_GET['fromString']) ?></TEXTAREA>
<br />
</FORM>

</BODY>
</HTML>
  




  PHP で EUC-JP の URL エンコード



  
<?
foreach( $_GET as $Key => $Value ) {
	$_GET[$Key] = str_replace("\\\\", "\\", $Value );
	$_GET[$Key] = str_replace("\\'", "'", $_GET[$Key] );
	$_GET[$Key] = str_replace("\\\"", "\"", $_GET[$Key] );
}
?>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=euc-jp">
</HEAD>
<BODY leftmargin=0 topmargin=0>

<FORM>
<INPUT type=submit value="変換"><br />
<TEXTAREA
	name="fromString"
	cols=80
	rows=5><?= $_GET['fromString'] ?></TEXTAREA>
<br />
<TEXTAREA
	name="toUjis"
	cols=80
	rows=5><? print urlencode($_GET['fromString']) ?></TEXTAREA>
<br />
</FORM>

</BODY>
</HTML>
  











  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ