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

标签 php image gd

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

相关文章:

php - 使用 imagegrabscreen 和 Wamp 捕获图像

php - 从图像生成调色板

php - 数据库类对象

php - 在 php 中保存配置数据的更好方法是什么?

php - 我该如何解决这个 Solr/MySQL 竞争条件?

java - Android:由于格式问题,我无法使用我必须使用的 URL 下载图像

image - .png图像无法在IE7,IE8中正确呈现

php - url重写导致Magento admin无法访问

php - 提交表单后如何在不选择要上传的新图像的情况下保留以前上传的图像(在db中)

php - 缓存是如何使用PHP GD实现的