HOME   入り口   MENU


No28.画像に字を描こうっ ---- GDライブラリ[2]




画像を作るのはできましたか?
線や四角や丸などを利用すれば楽しいゲームやグラフなんかもできますね。(^_^)

プラスそれに文字が入れられたらいいと思いませんか?

思いますよね?

私は思いました(^_^)えへへ

文字をいれるのは
ImageTTFText(画像ID, 文字サイズ, アングル, X座標, y座標, 文字色, フォントtのファイル,文字列);
ImageTTFText関数を使います。

<?php
Header ("Content-type: image/png");
$image = imagecreate(200, 200);
$black = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 255,255, 255);
$txt = mb_convert_encoding("離れPHP島", "SJIS", "UTF-8");
ImageTTFText ($image, 25, 0, 10, 60, $white, "../common/font/ipaexg.ttf",$txt);
imagepng($image);
imagedestroy($image);
?> ?>


と書いたものはこちら   (ソース)


イメージタグで呼び出すと
<img src="./php2004010601.php" height=100 width=100>




離れPHP島と描かれてますね。

では行毎にちょっとした説明を!(^_^)

その前に
$txt = mb_convert_encoding("離れPHP島", "SJIS", "UTF-8");
お使いのサーバが[JIS-mapped Japanese Font Support]をサポートしている場合
(phpinfo();で「-enable-gd-jis-conv」を検索してみてください。)
GDライブラリでは文字コードがSJIになります。
なのでUTF-8を文字コードにしてる場合、UTF-8からSJISヘ文字を変換する必要があります。
もし[JIS-mapped Japanese Font Support]をサポートしていないサーバをお使いなら
この行は不要で
$txt ="離れPHP島";
と記述できます。
ImageTTFText ($image, 25, 0, 10, 60, $white, "../common/font/ipaexg.ttf",$txt);
x座標,y座標はそのフォントの左下が起点になります
なので

ImageTTFText ($image, 25, 0, 10, 20, $white, "../common/font/ipaexg.ttf",$txt);
と文字サイズよりも少ないy座標にすると


となって文字の上が欠けてしまうので気をつけてくださいね。(^_^)


../common/font/ipaexg.ttfはTrueType フォントのパスです。
$txt = mb_convert_encoding("まさご", "SJIS", "UTF-8");
ImageTTFText ($image, 40, 0, 10, 100, $white, "../common/font/dasaji_win.TTF",$txt);


と別のフォントに変更することができます。
フォントはお使いのサーバに入っているものや追加したものが使えます。(^_^)
お気に入りのフォントを使用するときっと楽しいです♪

<?php
$txt = mb_convert_encoding("まさご", "SJIS", "UTF-8");
ImageTTFText ($image, 40, 0, 10, 100, $white, "../common/font/dasaji_win.TTF",$txt);
$txt = mb_convert_encoding("りゅう", "SJIS", "UTF-8");
ImageTTFText ($image,20, 90, 150, 180, $white, "../common/font/dasaji_win.TTF",$txt);
?>
次にアングルを変えてみましょーーーっ



とこんな風に回転します。

いろんなことができそうですね(^_^)

サンプル: こう書くと   ==>    こうなる!

文字を描く



(オマケ)


色は16進数も使うことができます。
$white = imagecolorallocate($image,0xFF,0xFF,0xFF);

$white = imagecolorallocate($image,255,255,255);
と同じです。











  HOME