PHP的图像生成问题构成了一个类

时间:2011-09-16 19:56:15

标签: php class header gd

我写了这段代码:

class Generate{
    private $canvas;
    function __construct($width, $height){
        $this->canvas = imagecreatetruecolor($width, $height);
    }
    public function bg($r=0,$g=0,$b=0){
        $color = imagecolorallocate($this->canvas, $r, $g, $b);
        imagefill($this->canvas, 0, 0, $color);
    }
    public function gen(){
        header('Content-Type: image/png');
        imagepng($this->canvas, NULL, 9);
        imagedestroy($this->canvas);
    }
}

用这个称呼它:

$G = new Generate(100, 100);
$G->bg(255, 255, 255);
$G->gen();

当我在gen()函数中注释掉标题并将其设置为保存图像时,它生成的图像很好。像这样:

imagepng($this->canvas, 'img.png', 9);

但我希望它发送标题(输出图像),但它给了我一个错误。谁能告诉我我做错了什么?你甚至可以用PHP类发送标题吗?

当我不使用OOP时,此代码可以正常工作

2 个答案:

答案 0 :(得分:2)

你的问题的答案是肯定的,你可以。您可以随时在向客户端发送任何输出之前发送标题,我怀疑这是您的问题。

您还可以检查要保存文件的编码。如果要将文件保存为UTF-8,请确保将其保存为没有字节顺序标记。这将计为输出,并始终是文件中的第一个字符,这意味着对header()的任何调用都会生成警告。

答案 1 :(得分:2)

当我发布代码时,代码对我来说非常适合;你确定你不只是在白色背景上丢失你的100x100白色图像吗?尝试将颜色更改为127,255,255(一个可爱的浅绿色)并查看它是否显示。