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

土屋 tsuchiya_masahiro @ yahoo.co.jp
2007年 3月 20日 (火) 22:24:46 JST


鈴木様

ツチヤです。
早速のお返事どうもありがとうございます。
また、お返事が遅くなり申し訳ございませんでした。

まず、1の方法についてですが、
result.phpにお教えいただいたコードを追加して、
以下のようなファイルを作成してみました。
(途中は省略しています。)

---- result.php -------

<?php
  $original_filename =
$HTTP_POST_FILES['filename']['tmp_name'];
  $img = @imagecreatefromjpeg ($original_filename);
  imagettftext($img, $size, 0, $x, $y, $color, $font,
$text); 

  ob_start();
  imagejpeg($img);
  $_SESSION['image'] = ob_get_contents();
  ob_end_clean();
?>
<BODY>
<TABLE>
 <TR>
  <TD width="80%" align="center">
   <?php print $_SESSION['image'];?>
  </TD>
 </TR>
</TABLE>
</BODY>

----- 以上 result.php -------

上記のファイルで試したところ、
大量の文字化けが返ってきました。
$_SESSION['image']の書き出しはprintでよいのでしょうか?
それともprint $_SESSION['image'];の場所がまずいのでしょ
うか?

また、2の方法はこれから試してみますので、
試し次第、またご連絡させていただきます。


--- 鈴木孝征 <takamasa @ thaliana.myhome.cx> wrote:

> 鈴木と申します。
> 
> 画像処理の内容をresult.phpに移して、合成した画像をセッ
ションに保存すると
> いう方法はどうでしょうか。PHPのイメージ処理関数群を眺
めたところ、画像
> データを変数に取得できるものがなさそうなので、出力バッ
ファを一時保存して
> セッションに保存してはどうでしょうか。
> 
> result.phpの処理
> 1. gousei.phpで行っていた画像処理を行う
> 2. ob_start()
> 3. imagejped($image)
> 4. $_SESSION['image'] = ob_get_contents()
> 5. ob_end_clean()
> 6. これまでのresult.phpの処理(HTMLを出力)
> 
> gousei.phpの処理(もはや合成処理を行っていませんが)
> 1. print $_SESSION['image']
> 
> 
> あるいはresult.phpで送信されたファイルの内容をfgetsで
取得してセッション
> にいれてしまうという方法もあるかと思います。gousei.php
側でセッションの内
> 容を取得したあとimagecreatefromstring関数でイメージに
戻すなど。
> 
> result.phpでの処理
> 1. $fp = fopen('送信されたファイル', 'r');
> 2. while(! feof($fp)) $_SESSION['file_content'] .=
> fgets($fp)
> 3. $_SESSION['post'] = $_POST
> 4. HTMLを出力
> 
> gousei.phpでの処理
> 1. $img =
> imagecreatefromstring($_SESSION['file_content']);
> 2. $post = $_SESSION['post'];
> 3. 画像処理
> 4. imagejpeg($img);
> 


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



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