Heim >Backend-Entwicklung >PHP-Tutorial >生成缩略图之后的页面显示问题
<code><?php header("content-type:text/html;charset=utf-8"); class Thumb{ // 水印图片路径 - 100*130 private $watermark; // 生成缩略图的路径 public $thumbPath="./"; public function __construct(){ $this->watermark="./logo.jpg"; } // $imageInfo是上传图片后返回的信息 // $type - 1代表生成商品或文章的缩略图,2代表生成头像缩略图 public function makeThumb($imageInfo,$with=360,$height=360,$type=1){ if($imageInfo['type']==".jpg"){ $src_image=imagecreatefromjpeg($imageInfo['source_img_path']); }else if($imageInfo['type']==".png"){ $src_image=imagecreatefrompng($imageInfo['source_img_path']); }else if($imageInfo['type']==".gif"){ $src_image=imagecreatefromgif($imageInfo['source_img_path']); } $image=imagecreatetruecolor($with,$height); $white=imagecolorallocate($image,255,255,255); // 将背景设为透明 imagecolortransparent($image,$white); imagefill($image,0,0,$white); // 开始判断最终生成的缩略图尺寸,避免变形 $finalWidth=$with; $finalHeight=$height; $x=$y=0; if($imageInfo['width']$imageInfo['height']){ // 确定缩放比例 $scale=round($finalWidth/$imageInfo['width'],2); $finalHeight=round($scale*$imageInfo['height']); $y=round(($height-$finalHeight)/2); }else if($imageInfo['width']$height){ $scale=round($finalHeight/$imageInfo['height'],2); $finalWidth=round($scale*$imageInfo['width']); $x=round(($with-$finalWidth)/2); }else if($with=200 && $finalHeight>=260){ $watermark=imagecreatefromjpeg($this->watermark); imagecopymerge($image,$watermark,$finalWidth-100,$finalHeight-130,0,0,100,130,80); imagedestroy($watermark); } !is_dir($this->thumbPath) && mkdir($this->thumbPath); // 保存路径+名字 $this->thumbPath=$this->thumbPath."/".time().mt_rand()."_{$finalWidth}_{$finalHeight}.png"; // 最后统一生成png格式,清晰度较高 header("content-type:image/png"); imagepng($image,$this->thumbPath); imagedestroy($image); imagedestroy($src_image); } } if($_FILES){ $a=new Thumb(); // 实际图片信息是上传处理过的信息,这里写成了固定的 $a->makeThumb(array('width'=>430,'height'=>430,'type'=>'.jpg','source_img_path'=>'./11.jpg')); } ?> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="thumb"> <p></p> <input type="submit" name="" value="上 传"> <input type="reset" name="" value="重 置"> </form></code>
11.jpg
水印图
执行该脚本之后,生成的缩略图没问题,正常保存
但是页面却显示小边框
求解,谢谢诸位
<code><?php header("content-type:text/html;charset=utf-8"); class Thumb{ // 水印图片路径 - 100*130 private $watermark; // 生成缩略图的路径 public $thumbPath="./"; public function __construct(){ $this->watermark="./logo.jpg"; } // $imageInfo是上传图片后返回的信息 // $type - 1代表生成商品或文章的缩略图,2代表生成头像缩略图 public function makeThumb($imageInfo,$with=360,$height=360,$type=1){ if($imageInfo['type']==".jpg"){ $src_image=imagecreatefromjpeg($imageInfo['source_img_path']); }else if($imageInfo['type']==".png"){ $src_image=imagecreatefrompng($imageInfo['source_img_path']); }else if($imageInfo['type']==".gif"){ $src_image=imagecreatefromgif($imageInfo['source_img_path']); } $image=imagecreatetruecolor($with,$height); $white=imagecolorallocate($image,255,255,255); // 将背景设为透明 imagecolortransparent($image,$white); imagefill($image,0,0,$white); // 开始判断最终生成的缩略图尺寸,避免变形 $finalWidth=$with; $finalHeight=$height; $x=$y=0; if($imageInfo['width']$imageInfo['height']){ // 确定缩放比例 $scale=round($finalWidth/$imageInfo['width'],2); $finalHeight=round($scale*$imageInfo['height']); $y=round(($height-$finalHeight)/2); }else if($imageInfo['width']$height){ $scale=round($finalHeight/$imageInfo['height'],2); $finalWidth=round($scale*$imageInfo['width']); $x=round(($with-$finalWidth)/2); }else if($with=200 && $finalHeight>=260){ $watermark=imagecreatefromjpeg($this->watermark); imagecopymerge($image,$watermark,$finalWidth-100,$finalHeight-130,0,0,100,130,80); imagedestroy($watermark); } !is_dir($this->thumbPath) && mkdir($this->thumbPath); // 保存路径+名字 $this->thumbPath=$this->thumbPath."/".time().mt_rand()."_{$finalWidth}_{$finalHeight}.png"; // 最后统一生成png格式,清晰度较高 header("content-type:image/png"); imagepng($image,$this->thumbPath); imagedestroy($image); imagedestroy($src_image); } } if($_FILES){ $a=new Thumb(); // 实际图片信息是上传处理过的信息,这里写成了固定的 $a->makeThumb(array('width'=>430,'height'=>430,'type'=>'.jpg','source_img_path'=>'./11.jpg')); } ?> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="thumb"> <p></p> <input type="submit" name="" value="上 传"> <input type="reset" name="" value="重 置"> </form></code>
11.jpg
水印图
执行该脚本之后,生成的缩略图没问题,正常保存
但是页面却显示小边框
求解,谢谢诸位
header("content-type:image/png");
把这一段删除试试?
你只是生成缩略图并不直接把缩略图显示给浏览器,却配置了浏览器输出为png格式,显示个方块,就是浏览器要显示图片,但是却没有正确的图片显示。