Home >Backend Development >PHP Tutorial >Page display problem after generating thumbnails
<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']<$with && $imageInfo['height']<$height){ // 这种情况,不拉伸源图,将源图放置在缩略图正中间 $finalWidth=$imageInfo['width']; $finalHeight=$imageInfo['height']; $x=round(($width-$finalWidth)/2); $y=round(($height-$finalHeight)/2); }else 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']<$imageInfo['height']){ $scale=round($finalHeight/$imageInfo['height'],2); $finalWidth=round($scale*$imageInfo['height']); $x=round(($width-$finalWidth)/2); }else if($imageInfo['width']==$imageInfo['height']){ if($with>$height){ $scale=round($finalHeight/$imageInfo['height'],2); $finalWidth=round($scale*$imageInfo['width']); $x=round(($with-$finalWidth)/2); }else if($with<$height){ $scale=round($finalWidth/$imageInfo['width'],2); $finalHeight=round($scale*$imageInfo['height']); $y=round(($height-$finalHeight)/2); } } imagecopyresampled($image,$src_image,$x,$y,0,0,$finalWidth,$finalHeight,$imageInfo['width'],$imageInfo['height']); // 增加水印 if($finalWidth>=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
Watermark image
After executing the script, the generated thumbnail is fine and saved normally
but the page displays a small border
Please help me, thank you
<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']<$with && $imageInfo['height']<$height){ // 这种情况,不拉伸源图,将源图放置在缩略图正中间 $finalWidth=$imageInfo['width']; $finalHeight=$imageInfo['height']; $x=round(($width-$finalWidth)/2); $y=round(($height-$finalHeight)/2); }else 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']<$imageInfo['height']){ $scale=round($finalHeight/$imageInfo['height'],2); $finalWidth=round($scale*$imageInfo['height']); $x=round(($width-$finalWidth)/2); }else if($imageInfo['width']==$imageInfo['height']){ if($with>$height){ $scale=round($finalHeight/$imageInfo['height'],2); $finalWidth=round($scale*$imageInfo['width']); $x=round(($with-$finalWidth)/2); }else if($with<$height){ $scale=round($finalWidth/$imageInfo['width'],2); $finalHeight=round($scale*$imageInfo['height']); $y=round(($height-$finalHeight)/2); } } imagecopyresampled($image,$src_image,$x,$y,0,0,$finalWidth,$finalHeight,$imageInfo['width'],$imageInfo['height']); // 增加水印 if($finalWidth>=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
Watermark image
After executing the script, the generated thumbnail is fine and saved normally
but the page displays a small border
Please help me, thank you
header("content-type:image/png");
Try deleting this paragraph?
You only generate thumbnails and do not directly display the thumbnails to the browser, but you configure the browser to output the png format and display a box, which means that the browser wants to display the image, but it does not display the correct image.