我想从脚本生成动态图像,然后将其加载到浏览器而不是在服务器上持久化。
但是,我无法通过设置图像的src =“script.php”来调用它,因为这需要运行刚刚生成页面及其数据的脚本,只是为了获得将生成的最终数据图形。
有没有办法做到这一点类似于设置图像的src =“script.php”,但是从另一个脚本中调用,只是发送图像而不保存它?我需要访问生成标记时使用的数据,以便创建这个动态图像。
或者,如果没有,一旦加载页面,破坏图像的最简单方法是什么?一个快速的ajax电话?
有没有办法在某些有限的时间范围内缓存某些数据,以便某些其他脚本可以使用它?
任何想法都会非常感激,因为我很难找到合适的解决方案......
谢谢!
答案 0 :(得分:9)
您可以将图片内联到< img>如果你需要标记。
像
<?php
$final_image_data; // Your image data, generated by GD
$base64_data = base64_encode($final_image_data);
echo "<img src=\"data:image/png;base64,{$base64_data}\" ... />";
?>
这应该适用于所有现代浏览器和IE8。对某些电子邮件客户端而言效果不佳(Outlook,一个)。
答案 1 :(得分:3)
另外,我找到的另一个解决方案是将图像存储在会话变量中,然后从图像标记中的php脚本调用该变量。这将允许提供用户特定的图像,然后通过脚本从内存中删除...这也避免了凌乱的img src =“”标签......
希望这对某人有帮助。
答案 2 :(得分:-1)
使用重写规则。
RewriteRule ^magicimage.jpg$ /myscript.php
然后简单地从gd回显您的图像数据,而不是将其写入磁盘 - 这就像没有为相应的image*()函数提供文件名一样简单
myscript.php
<?php
$im = imagecreatetruecolor($w, $h);
//...do gd stuff...
header('Content-type: image/jpeg');
//this outputs the content directly to the browser
//without creating a temporary file or anything
imagejpeg($im);
最后,利用上面的
Display.php的
<img src="magicimage.jpg">