0

嗨,我已经在网上搜索了 2 天,但没有完成我正在寻找的内容。

我有一个 apache 服务器,可供 146 名学生访问。用户从下拉列表中选择一个角度,比如说 45 度,然后用户单击 CALCULATE 按钮。然后用户单击 DIAGRAM 按钮查看正弦图的样子。

当我将图像写入文件时就像魅力一样: imagepng($img,"diagram.png");

现在的问题是 diagram.png 总是会被最后一个用户覆盖。例如,如果另一个用户登录并计算 Sin 135。两个用户都会看到 Sine 135,因为文件名是硬编码的,因为文件名冲突。

我在网上搜索了如何动态创建图像而不是写入文件然后读取文件。我遇到了以下但不工作:

  base64_encode and decode

我必须对上面提到的 imagepng(...., ...) 代码做什么才能使用 base64,这样我才能真正绘制已经处理过的数据的图片。假设如果我注释掉 imagepng(..) 代码,那么我用什么替换它。我希望我不必更改我的代码很多。

请帮忙

谢谢

阿米特

4

3 回答 3

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 回答
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);

通过使用 GET 请求,而不是 POST 请求,图像可能会被浏览器缓存,因此不需要每次都呈现。(鉴于您有一个角度的下拉列表,实际可以绘制的图形数量必须有限)

于 2013-08-13T22:44:53.620 回答
0

Draw_Resultant_Prism_Graph(参数)

{

$img = imagecreatetruecolor(800,750); ………………

以下行从输出缓冲区捕获数据并显示在同一屏幕上

***某些版本的 IE 有一些问题,主要是 IE 更新为 ADMIN 的哑终端

***受限制的

ob_start();

header("内容类型:图片/jpeg");

imagepng($img);

$output = ob_get_contents();

ob_end_clean();

图像销毁($img);

echo img src="data:image/jpeg;base64,'.base64_encode($output).'"

上面的 img 和分号 af 周围的用户标签

}

于 2013-08-19T01:19:00.573 回答