0

こんにちは、2 日間ウェブを検索しましたが、探しているものが見つかりませんでした。

私は 146 人の学生がアクセスする Apache サーバーを持っています。ユーザーはドロップダウンから角度を選択し、たとえば 45 度とします。ユーザーは [計算] ボタンをクリックします。次に、ユーザーは DIAGRAM ボタンをクリックして、正弦グラフがどのように見えるかを確認します。

画像をファイルに書き込むと、魅力的に機能します。

問題は、diagram.png が常に最後のユーザーによって上書きされることです。たとえば、別のユーザーがログインして Sin 135 を計算するとします。ファイル名の競合があるため、ファイル名がハードコードされているため、両方のユーザーに Sine 135 が表示されます。

ファイルに書き込んでからファイルを読み取るのではなく、画像を動的に作成する方法についてWebを検索しました。私は以下に出くわしましたが、機能していません:

  base64_encode and decode

上記の imagepng(...., ...) のコードを base64 を使用して実際に処理済みデータの画像を描画できるようにするには、どうすればよいでしょうか。imagepng(..) コードをコメントアウトした場合、それを何に置き換えるかを考えてみましょう。コードを大幅に変更する必要がないことを願っています。

助けてください

ありがとう

アミット

4

3 に答える 3

0

コードがどのように構造化されているかを見ないとわかりませんが、ユーザーがフォームを送信したら、画像を表示するだけなら、次のようなことができます。

// make sure nothing else is out put before this otherwise it will stuff up the header
header('Content-Type: image/png); 
imagepng($img);

結果として画像を html ページに埋め込む場合は、成功ページの画像の URL を次のように変更することをお勧めします。

<img src="/path/to/file.php?deg=45" />

次に、file.phpで

$deg = $_GET['deg'] + 0; // make sure it is a number

$img= function_render_graph($deg);

// make sure nothing else is out put before this otherwise it will stuff up the header
header('Content-Type: image/png); 
imagepng($img);

POST リクエストではなく GET リクエストを使用すると、画像はブラウザによってキャッシュされる可能性が高いため、毎回レンダリングする必要はありません。(角度のドロップリストがあるとすれば、実際に描画できるグラフの数は限られているはずです)

于 2013-08-13T22:44:53.620 に答える
0

へのファイル名引数imagepngはオプションです。マニュアルから:

ファイル名

The path to save the file to. If not set or NULL, the raw image stream will be outputted directly.

スクリプトの先頭に png ヘッダーを送信するだけで、そのスクリプトの出力として画像を取得できます。

于 2013-08-13T22:21:58.550 に答える