[PHP-users 31717] POST で送信し、 GD でダイレクト出力し、< img >で表示する方法

土屋 tsuchiya_masahiro @ yahoo.co.jp
2007年 3月 19日 (月) 23:12:41 JST


初めて投稿させていただきます。
独学でPHPを勉強しているツチヤと申します。

フォームから画像ファイルを送信し、GDライブラリを使って、
その画像に文字を合成して出力するプログラムを作成したいと
考えております。
合成した画像は imagejpeg($img)を使ってダイレクトに出力し
、HTMLへの表示は、<img src=xxx.php>を使って任意の場所に
表示したいと考えております。

ファイルは、
(1)フォームを送信するHTMLファイル(form.html)と、
(2)結果を表示するPHPファイル(result.php)と、
(3)合成画像を生成するPHPファイル(gousei.php)の3つを想
定しております。

ここで、form.htmlからPOSTでgousei.phpにファイルを送信し
、その結果を、ダイレクトでresult.phpに表示させることはで
きないのでしょうか?
(gousei.phpで一旦ファイルに出力し、result.phpでそのファ
イルを表示すればよいのかもしれませんが、
ファイルに書き出すのではなく、ダイレクトに表示させたいと
考えております。)

あるいは、form.htmlから一旦result.phpにファイルを送信し
、result.phpからgousei.phpに、例えばcurl関数を使ってファ
イル名を送信してもよいかと思い、
result.php内で以下のようなコードを書いてみましたが、うま
く画像が表示されませんでした(化けた文字が返ってきました
)。

----result.php内での処理----
$filename = $HTTP_POST_FILES['filename']['tmp_name'];
//form.html
からファイルを受ける。
$ch = curl_init('gousei.php'); //gousei.phpに送信する。
curl_setopt($ch, CURLOPT_POST, true ); //POSTで送信
curl_setopt($ch, CURLOPT_POSTFIELDS, $filename);
//$filename
を送信
<img src= <?php curl_exec($ch); ?> >//curlを実行し、実行
結果の画像を表示?
curl_close($ch);

----gousei.phpでの処理----
$filename = $HTTP_GET_VARS['filename'];
//result.phpからPOST
でfilenameを受ける。
($imgに文字合成処理)
imagejpeg($img); //ダイレクトに出力

ちなみに、POSTではなくGETを使えば、

----result.php内での処理----
$filename = $HTTP_POST_FILES['filename']['tmp_name'];
<img src="gousei.php?filename=$filename">

----gousei.phpでの処理----
$filename = $HTTP_GET_VARS['filename'];
($imgに文字合成処理)
imagejpeg($img);

とすればうまくいくかと思うのですが、将来的には長い文章も
送信したいので、GETではなくPOSTで送信したいと考えており
ます。

どなたかPOSTでファイルを送信し、imagejpegでダイレクト出
力し、<img>タグで任意の場所に表示する方法をお教え願えな
いでしょうか?
あるいは、そのようなことはできないのでしょうか?

ご教授のほど、どうぞよろしくお願いいたします。




--------------------------------------
Start Yahoo! Auction now! Check out the cool campaign
http://pr.mail.yahoo.co.jp/auction/



PHP-users メーリングリストの案内