Проблема генерирования изображений с помощью PHP формы класса - PullRequest
0 голосов
/ 16 сентября 2011

я написал этот код:

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?

этот код отлично работает, когда я не использую ООП

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

Код отлично работает для меня, когда я запускаю его, как вы его опубликовали; Вы уверены, что не просто теряете свое белое изображение 100х100 на белом фоне? Попробуйте изменить цвет, скажем, на 127,255,255 (прекрасный аква) и посмотрите, появится ли он.

2 голосов
/ 16 сентября 2011

Ответ на ваш вопрос: да, вы можете.Вы можете отправлять заголовки в любое время , прежде чем отправлять какие-либо выходные данные клиенту , что, как я подозреваю, является вашей проблемой.

Вы также можете проверить кодировку, сохраняющую файл.in. Если вы сохраняете файл как UTF-8, убедитесь, что вы сохранили его без метки порядка байтов.Это считается выводом и всегда будет первым символом в вашем файле, означая, что любой вызов header() вызовет предупреждение.

...