Php 从对象在站点中显示图像

Php 从对象在站点中显示图像,php,php-gd,Php,Php Gd,如果你知道如何发展我真正想做的事情,请告诉我 我有一个代码,可以创建如下图像(类似于验证码): /* createImg.php */ class createImg{ public function __construct(){ /*stuff here*/ } public function showImg(){ /*stuff here*/ header("Content-type: image/png"); imagepng($image);

如果你知道如何发展我真正想做的事情,请告诉我

我有一个代码,可以创建如下图像(类似于验证码):

/* createImg.php */


class createImg{
public function __construct(){
    /*stuff here*/
}

public function showImg(){
    /*stuff here*/
    header("Content-type: image/png");
    imagepng($image);
    imagedestroy($image);
}
}
$img = new createImg();
$img->showImg();
我所做的创建图像的工作如下:

/* index.php */
echo '<img src="createImg.php" />';
/*index.php*/
回声';
一切正常,但我想做的是以下几件事,但我不知道如何实施:

/* index.php */
$img = new createImg();
//and now something like this
echo '<img src="$img->showImg()" />';
/*index.php*/
$img=新创建的img();
//现在是这样的
回显'showImg()“/>';

<>我的问题是,如果我用这个方法,我在主屏幕中得到了图像,因为函数中有标题。有没有办法做我想做的事?

< P>一般来说,你不能在HTML页面中间输出原始图像数据,这是你试图做的<代码>回声< /代码>语句。

有一些有限的机制,如,但它们有重要的局限性需要注意,并且可能不适合大多数情况

相反,您需要有一些方法为您的图像生成URL,其中包含足够的信息来创建正确的图像。对于一个简单的情况,这可能类似于
“/img.php?width=100&height=100&color=red”

由于您将您的用例描述为“类似于验证码”,这可能会更加复杂,并且可能还需要进行模糊处理,而不仅仅是拼写URL中的内容。因此,您需要在服务器端存储一些内容;我可以想出一些方法:

  • 您可以将图像数据或生成图像所需的输入写入PHP会话。会话中常见的问题(如锁定)也适用
  • 您可以将数据保存到数据库中,给它一个唯一的键;然后图像URL可以类似于
    “/img.php?unique_id=42”
  • 您可以将生成的图像保存到磁盘,为其指定一个唯一的文件名。这显然需要某种“垃圾收集”机制,否则您的磁盘将最终填满所有这些图像文件