在php中,如果php以图片,zip,exe等文件输出到浏览器,而前面还输出了其他字符,则会出现乱码。
原因分析:
输出图片前有输出空格或其他字符造成的,此时请检查一下输出图片前有没有其他字符,如果是utf-8编码记得保存为无BOM的文件。
例子:
<?php //输出图片内容到浏览器 //by www.jb200.com class imgdata{ public $imgsrc; public $imgdata; public $imgform; public function getdir($source){ $this->imgsrc = $source; } public function img2data(){ $this->_imgfrom($this->imgsrc); return $this->imgdata=fread(fopen($this->imgsrc,'rb'),filesize($this->imgsrc)); } public function data2img(){ header("content-type:$this->imgform"); echo $this->imgdata; //echo $this->imgform; //imagecreatefromstring($this->imgdata); } public function _imgfrom($imgsrc){ $info=getimagesize($imgsrc); //var_dump($info); return $this->imgform = $info['mime']; } } $n = new imgdata; $n -> getdir("1.jpg"); $n -> img2data(); $n -> data2img(); ?>
附,提取一个图像文件并在浏览器上显示,代码:
<?php $size = getimagesize($filename); //获取mime信息 $fp=fopen($filename, "rb"); //二进制方式打开文件 if ($size && $fp) { header("Content-type: {$size['mime']}"); fpassthru($fp); // 输出至浏览器 exit; } else { // error } ?>