联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
自定义应用里用header("Content-type: image/jpeg"); 输出图片,header不起作用,输出为乱码
类型:迅睿CMS 更新时间:2020-09-25 15:12:13

自定义应用里用header("Content-type: image/jpeg"); 输出图片,header不起作用,输出为乱码。

浏览器里还是content-type:text/html; charset=UTF-8,请教一下这个怎么样才能输出显示图片?


回帖
  • 官方研发实习技术
    #1楼    官方研发实习技术
    2020-09-25 14:52:29
    Chrome 0
    要看看你的代码
  • Alvin
    #2楼    Alvin
    2020-09-25 14:56:08
    Chrome 0
    官方研发实习技术
    <?php namespace Phpcmf\Controllers;
    
    class Show extends \Phpcmf\Common
    {
    
        public function img() {
            $url = \Phpcmf\Service::L('input')->get('url');
            $img_info = getimagesize($url);
            $img = $this->https_request($url);
            header('Content-type: image/jpeg');
            return $img;
        }
         //HTTP请求(支持HTTP/HTTPS,支持GET/POST)
        protected function https_request($url, $data = null)
        {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
            if (!empty($data)){
                curl_setopt($curl, CURLOPT_POST, 1);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            }
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
            $output = curl_exec($curl);
            curl_close($curl);
            return $output;
        }
    }
  • Alvin
    #3楼    Alvin
    2020-09-25 14:59:53
    Chrome 0
    官方研发实习技术

  • 官方研发实习技术
    #4楼    官方研发实习技术
    2020-09-25 15:00:21
    Chrome 0
    你是要把图片输出到浏览器吗?这种代码是完成不了输出浏览器的
  • Alvin
    #5楼    Alvin
    2020-09-25 15:00:59
    Chrome 0
    但是这个图片,用img标签是可以显示的,就是直接访问是乱码,设置的header没起作用
  • 官方研发实习技术
    #6楼    官方研发实习技术
    2020-09-25 15:04:08
    Chrome 0
    <?php namespace Phpcmf\Controllers;
    
    class Show extends \Phpcmf\Common
    {
    
        public function img() {
            $url = \Phpcmf\Service::L('input')->get('url');
            $info = getimagesize($url);
            $img = $this->https_request($url);
            header('Content-type: image/jpeg');
            $imgExt = image_type_to_extension($info[2], false);  //获取文件后缀
    	$fun = "imagecreatefrom{$imgExt}";
    	$imgInfo = $fun($img); 					//1.由文件或 URL 创建一个新图象。如:imagecreatefrompng ( string $filename )
    	//$mime = $info['mime'];
    	$mime = image_type_to_mime_type(exif_imagetype($img)); //获取图片的 MIME 类型
    	header('Content-Type:'.$mime);
    	$quality = 100;
    	if($imgExt == 'png') $quality = 9;		//输出质量,JPEG格式(0-100),PNG格式(0-9)
    	$getImgInfo = "image{$imgExt}";
    	$getImgInfo($imgInfo, null, $quality);	//2.将图像输出到浏览器或文件。如: imagepng ( resource $image )
    	imagedestroy($imgInfo);
        }
         //HTTP请求(支持HTTP/HTTPS,支持GET/POST)
        protected function https_request($url, $data = null)
        {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
            if (!empty($data)){
                curl_setopt($curl, CURLOPT_POST, 1);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            }
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
            $output = curl_exec($curl);
            curl_close($curl);
            return $output;
        }
        
    	
    }
    改进一下,试一试这个
  • Alvin
    #7楼    Alvin
    2020-09-25 15:04:20
    Chrome 0
    官方研发实习技术 好吧,那我用单文件吧,单文件是可以输出显示的。
  • 吉祥三宝
    #8楼    吉祥三宝
    2020-09-25 15:06:47
    Chrome 0
    return $img;
    改成
    echo $img;exit;
    满意答案
  • Alvin
    #9楼    Alvin
    2020-09-25 15:10:02
    Chrome 0
    官方研发实习技术 谢谢,你这个代码,我研究研究
  • Alvin
    #10楼    Alvin
    2020-09-25 15:12:13
    Chrome 0
    @吉祥三宝:这个可以