ウェブサービスを作りたい。
いきなりですが、ウェブサービスを作ってみたいのです。

ウェブサービスといっても、入力したメッセージを表示するとかそういう簡単なのからでいいのですが。

とりあえず簡単そうなウェブサービスを調べてみると、脳内メーカーとか、まさに外道ジェネレータとかの、○○ジェネレータってやつでしょうか。
入力した文字に対して処理を行い画像に表示すると流れ。

そこで、PHPの画像処理の方法を調べてみると、GDライブラリというのが有るようです。


早速、GDライブラリを利用して画像に入力した文字を出力させるサンプルを書いてみます。
フォントは独立行政法人の所のを利用しています。

<?php
$txt = $_GET["input"];
$jpeg = "test.jpg";
$image = imagecreatefromjpeg($jpeg);
$black = imagecolorallocate($image, 0,0,0);
$txt = mb_convert_encoding($txt,"UTF-8","auto");
ImageTTFText ($image, 10, 0, 100, 42, $black, "ipag.ttf",$txt);
header("Content-type: image/jpeg");
imagejpeg($image);
imagecolordeallocate($image,$bcolor);
imagedestroy($image);
?>

実行してみると、見事に画像が表示されました。

次に、このPHPソースをHTML内に書き込み、画像を出力しようとしたところ問題が発生。
どうやらPHPとHTMLのヘッダーの指定か何かで、PHPで生成したjpgeがバイナリで出力されてしまっている模様。

そこでまた調べてみると、PHPで一度画像を作りそれをimgタグで読み込む方法と、imgタグのsrcでPHPコードを読み込む方法の2パターンを発見。



まずは、PHPで一度画像を作ってから読み込む方法を。
imagejpeg($image,"test.jpg");の第二引数に、作るファイル名を追加。
このとき、作られた画像がおかれるディレクトリの権限を、PHPが書き込みできるようにしないと怒られていまいます。
そして、実行してみるとHTML内部に画像が表示出来ましたが、画像のキャッシュが残ってしまうのか、連続で同じ文字の画像が表示されることがあります。


そこで2つ目のimgタグのsrcにPHPソースコードを指定するパターン。
この方法なら画像ファイルを保存しないので、キャッシュの問題はクリアできそうです。
<img src="imagemake.php?input=<?php echo $_GET['input']; ?>" >
こんな感じに入力した文字をGET変数を渡して読み込みます。
実行してみると、今度は成功。
毎回入力した文字の画像が表示されます。


これで早くも○○ジェネレータのようなものが出来ました。
どこかPHPが動くサーバーを借りてみて、ウェブにアップしてみたいと思います。