业务经理

微信扫描以上二维码

028-61286886

技术咨询

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

迅睿框架 更新 2020-09-25 15:12:13 Alvin

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

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


方案

  • 官方研发实习技术 #1 · 2020-09-25 14:52:29
    要看看你的代码
  • Alvin #2 · 2020-09-25 14:56:08
    官方研发实习技术
    <?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 · 2020-09-25 14:59:53
    官方研发实习技术

  • 官方研发实习技术 #4 · 2020-09-25 15:00:21
    你是要把图片输出到浏览器吗?这种代码是完成不了输出浏览器的
  • Alvin #5 · 2020-09-25 15:00:59
    但是这个图片,用img标签是可以显示的,就是直接访问是乱码,设置的header没起作用
  • 官方研发实习技术 #6 · 2020-09-25 15:04:08
    <?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 · 2020-09-25 15:04:20
    官方研发实习技术 好吧,那我用单文件吧,单文件是可以输出显示的。
  • 吉祥三宝 #8 · 2020-09-25 15:06:47
    满意答案
    return $img;
    改成
    echo $img;exit;
  • Alvin #9 · 2020-09-25 15:10:02
    官方研发实习技术 谢谢,你这个代码,我研究研究
  • Alvin #10 · 2020-09-25 15:12:13
    @吉祥三宝:这个可以

迅睿系统漏洞

外贸多语言建站
外贸多语言建站(2026-10-30)
修正对百度编辑器提取支持
AI文章生成器
AI文章生成器(2026-10-29)
任务插图设置数量
Bing站长数据
Bing站长数据(2026-10-29)
根据BING接口调整菜单 各个页面数据支持点击查看详情
按字段付费
按字段付费(2026-10-29)
按字段付费用于模块的字段设置一定的价格,当用户购买了此内容的字段时才...
泛解析站群系统
泛解析站群系统(2026-10-29)
AI队列增加清空按钮 表单提示语收敛 目录模式不接管主域名模板
账号注销
账号注销(2026-10-29)
用于用户中心的注销账号申请,后台审核通过后注销此账号。后台统一管理注...
邮件群发
邮件群发(2026-10-28)
修改模板的命名
自定义收款/捐款
自定义收款/捐款(2026-10-28)
自定义收款或捐款插件可以让用户快速创建付款或者捐款功能
CMS内容批量修改
CMS内容批量修改(2026-10-28)
后台批量修改文章内容的指定字段在插件后台可以任意指定字段
全站模块搜索
全站模块搜索(2026-10-28)
实现全模块一次性搜索内容,一键搜索全站内容精准搜索全部模块: