我正在尝试创建一种方法来以 OOP 方式显示使用 PHP/GD 创建的图像。为了实现这一点,我创建了一个类,其中包括创建图像。像这样:
<?php
class MyClass
{
public $image;
function __construct()
{
...
$this->image = imagecreatetruecolor(100,100);
$bg = imagecolorallocate($this->image,100,100,100);
imagefilledrectangle($this->image,0,0,100,100,$bg);
...
}
...
}
$myvar = new MyClass
?>
我试图在类中创建一个函数来输出图像。像这样:
function show()
{
echo "<img src='" . imagejpeg($this->image,100) . "' />";
}
但是没有用。我也试过了
function show()
{
echo "<img src='data:image/jpeg;base64," . imagejpeg($this->image,100) . "' />";
}
但这也没有用。这个想法是简单地从 HTML 调用函数。像这样:
<div id='anyid'>
<?php $myvar->show(); ?>
</div>
我在这方面做错了吗?有没有办法完成我想要的?我试图想出一种使用 img='mycode.php' 的方法,但它对我不起作用,因为必须在页面加载之前创建该类并且图像出现在中途页面。
谢谢。
最佳答案
首先,您需要向 imagejpeg()
插入第二个参数,以允许 100
成为质量参数。然后,您需要对原始字节进行base64 编码:
public function show() {
// Begin capturing the byte stream
ob_start();
// generate the byte stream
imagejpeg($this->image, NULL, 100);
// and finally retrieve the byte stream
$rawImageBytes = ob_get_clean();
echo "<img src='data:image/jpeg;base64," . base64_encode( $rawImageBytes ) . "' />";
}
data:image/jpeg;base64
需要将原始字节编码为 base64。
此外,我建议将 $image
设为一个 protected
变量,因为我认为它是在 MyClass
内部创建和维护的.
关于php - 我可以显示用 PHP/GD 创建的图像而不保存并且不使用带有图像标题的外部 PHP 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8811910/