在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
}
?>