php 生成验证码 不能显示

作者: admin 类别: 技术宝典 发布时间: 2016-12-10 阅读: 1578 评论: 0

 一种解决办法:输出图片前加入 ob_clean();

function showImage() { 

        $image = imagecreatetruecolor($this->height, $this->width);

        

        $width = imagesx($image); 

        $height = imagesy($image); 

        $black = imagecolorallocate($image, 0, 0, 0); 

        $white = imagecolorallocate($image, 255, 255, 255); 

        $red = imagecolorallocatealpha($image, 255, 0, 0, 75); 

        $green = imagecolorallocatealpha($image, 0, 255, 0, 75); 

        $blue = imagecolorallocatealpha($image, 0, 0, 255, 75); 

         

        imagefilledrectangle($image, 0, 0, $width, $height, $white); 

       

        imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $red); 

        imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $green); 

        imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $blue); 

 

        imagefilledrectangle($image, 0, 0, $width, 0, $black); 

        imagefilledrectangle($image, $width - 1, 0, $width - 1, $height - 1, $black); 

        imagefilledrectangle($image, 0, 0, 0, $height - 1, $black); 

        imagefilledrectangle($image, 0, $height - 1, $width, $height - 1, $black); 

      

        imagestring($image, 10, intval(($width - (strlen($this->code) * 9)) / 2),  intval(($height - 15) / 2), $this->code, $black);

         ob_clean();

        header('Content-type: image/jpeg');

        

        imagejpeg($image);

        

        imagedestroy($image);        

    }