gpt4 book ai didi

php - 我可以显示用 PHP/GD 创建的图像而不保存并且不使用带有图像标题的外部 PHP 吗?

转载 作者:可可西里 更新时间:2023-10-31 22:18:34 24 4
gpt4 key购买 nike

我正在尝试创建一种方法来以 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com