业务经理

微信扫描以上二维码

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-09-15)
优化排版缺少文字情况
GEO系统
GEO系统(2026-09-15)
运营客户端,防止误触阴影处关闭对话框
独立站群系统
独立站群系统(2026-09-14)
子站独立部署时修复同步附件失败问题
在线客服
在线客服(2026-09-13)
修复删除会话报错问题 删除会话时联动删除聊天图片
在线考试竞赛系统
在线考试竞赛系统(2026-09-12)
增加投票功能 考试功能拓展 注意:更新后需要执行系统更新,更新数...
网上信箱
网上信箱(2026-09-12)
修复新版本兼容问题
GeoSeo收录宝
GeoSeo收录宝(2026-09-12)
1 优化Update.php文件,解决版本在线升级不完整问题 2 ...
GeoSeo工具箱
GeoSeo工具箱(2026-09-11)
修正历史记录推送
微信系统
微信系统(2026-09-11)
增加数据统计总览界面 账号管理增加服务和公众号的区别 菜单管理支持更...
答题系统
答题系统(2026-09-11)
一站式在线答题系统,支持真题考试、题库练习和错题本,适合培训、考证、...