在 PHP 中,如何直接在我的网站上使用 GD 库创建的图像
Posted
技术标签:
【中文标题】在 PHP 中,如何直接在我的网站上使用 GD 库创建的图像【英文标题】:In PHP, how do I use the GD library created image directly on my website 【发布时间】:2013-07-11 13:15:07 【问题描述】:我不确定我是否完全理解它是如何工作的。对于网站表单,我想生成一个随机验证码图像并将其与表单一起显示。所以理想情况下,我想要一些类似的东西:
<form action="post.php" method="post">
...
<?php create_captcha(); ?>
</form>
虽然我确实有一个在 PHP 中创建图像资源的函数 (link)
function create_captcha()
$w = 60; $h = 30;
$img = imagecreatetruecolor($w, $h);
...
//header("Content-Type: image/jpeg");
imagejpeg($img);
我不太清楚如何将该图像作为 html 表单的一部分直接输出到网站上。我怀疑我必须将它保存到一个临时文件captcha.jpg
中,然后在网站中生成一个<img src="captcha.jpg" />
。
有没有更优雅的方式不使用临时图像?
【问题讨论】:
【参考方案1】:使用您的验证码生成文件路径作为 IMG 标签的来源
<img src="http://domain.com/your-captcha_generating-file-path" />
【讨论】:
等等..这么简单?我将create_captcha()
函数的主体填充到它自己的captcha.php 文件中,然后简单地从带有<img src="php/captcha.php" alt="" />
的表单中调用它。像魅力一样工作:)
如何添加header()
?我想设置header("Cache-Control: no-cache, must-revalidate");
以确保捕获的图像不被缓存。【参考方案2】:
你可以这样做:
function getCaptcha()
// Begin output buffering
ob_start();
// generate the captcha image in some magic way
$w = 60; $h = 30;
$img = imagecreatetruecolor($w, $h);
imagejpeg($img);
// and finally retrieve the byte stream
$rawImageBytes = ob_get_clean();
return "<img src='data:image/jpeg;base64," . base64_encode( $rawImageBytes ) . "' />";
通过在 img 标签中使用 Base64 编码的数据源,您根本不需要存储任何临时文件。
【讨论】:
谢谢!我确实记得将图像数据嵌入到网站中(很久以前),但我不知道如何在 PHP 中执行此操作。不过感谢上面的代码,如果@San's 不会更干净,那将是一个很好的解决方案。 不客气。事实上,我也赞成@San 的回答,因为它更简单。 :D 谢谢兄弟。它节省了我很多时间。以上是关于在 PHP 中,如何直接在我的网站上使用 GD 库创建的图像的主要内容,如果未能解决你的问题,请参考以下文章
Composer 安装“PHP 警告:PHP 启动:无法加载动态库 'gd2'”
imagerotate上的弹性beantalk linux php GD库错误