教你用php将二维码和文字结合到一个背景图片上!

互联网 20-7-7

将二维码生成到背景图片上,并且文字生成到背景图上,可以无限制扩增

1.生成前的图片

生成后的图片

class codeImg { 	private $date,$img,$main,$width,$height,$target,$white;     	public function constr($source)     	{     		$this->date   = '' . date('Ymd') . '/'; 	        $this->img    = $this->date . md5($source) . '.jpg'; 	        $this->main   = imagecreatefromjpeg($source); 	        $this->width  = imagesx($this->main); 	        $this->height = imagesy($this->main); 	        $this->target = imagecreatetruecolor($this->width, $this->height); 	        $this->white  = imagecolorallocate($this->target, 255, 255, 255);         		imagefill($this->target, 0, 0, $this->white);         		imagecopyresampled($this->target, $this->main, 0, 0, 0, 0, $this->width, $this->height, $this->width, $this->height);     	}     	/** 	     * 生成二维码 	     * @param  [type]  $website  [生成二维码地址] 	     * @param  string  $filename [生成二维路经名称] 	     * @param  string  $level    [这个参数可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%),这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别;] 	     * @param  integer $size     [控制生成图片的大小,默认为4] 	     * @param  integer $margin [控制生成二维码的空白区域大小] 	     * @return [type]            [description] 	     */ 	      public function qrencode($website, $filename = false, $level = "L", $size = 4, $margin = 2) 	      { 	      		include "./phpqrcode/qrlib.php";         			QRcode::png($website, $filename, $level, $size, 2); 	      } 	      /** 	     * 把二维码图片生成到背景图片上及文字 	     * @param  string  $source      背景图片 	     * @param  string  $text1       文字描述 	     * @param  string  $child1      二维码图 	     * @param  integer $textwidth   文字横向位置 	     * @param  integer $textherght  文字高度 	     * @param  integer $$fontSize   字体大小 	     * @param  integer $cate1,$cate2,$cate3 颜色表 	     * @param  string $font         文字字体 	     * @return [type]               [description] 	     */ 	     public function generateFont($source, $text1, $textwidth, $textherght, $fontSize = 18, $cate1 = 255, $cate2 = 250, $cate3 = 250, $font = './font/fangsong_GB2312.ttf') 	     { 	     	$this->constr($source);         		$fontColor = imagecolorallocate($this->target, $cate1, $cate2, $cate3); //字的RGB颜色         		$fontBox   = imagettfbbox($fontSize, 0, $font, $text1); //文字水平居中实质         		imagettftext($this->target, $fontSize, 0, $textwidth, $textherght, $fontColor, $font, $text1);         		$this->createImg();         		return $this->img; 	     } 	      /** 	     * [generateImg description] 	     * @param  string  $source        背景图片 	     * @param  string  $codeurl       二维码图片 	     * @param  integer  $sourcewidth  二维码横向所在位置 	     * @param  integer  $sourceheight 二维码高度位置 	     * @param  integer $codewidth    二维码宽度 	     * @param  integer $codeheight   二维码高度 	     * @return [type]                [description] 	     */ 	      public function generateImg($source, $codeurl, $sourcewidth, $sourceheight, $codewidth = 100, $codeheight = 100) 	      { 			$this->constr($source);         			$child1 = imagecreatefrompng($codeurl);         			$codewidth = $codewidth > 0 ? $codewidth :imagesx($child1);         			$codeheight = $codeheight > 0 ? $codeheight : imagesy($child1);         			imagecopyresampled($this->target, $child1, $sourcewidth, $sourceheight, 0, 0, $codewidth, $codeheight,imagesx($child1),imagesy($child1));         			imagedestroy($child1);         			$this->createImg();         			return $this->img; 		} 		function createImg() 		{ 			@mkdir('./' . $this->date);        			 imagejpeg($this->target, './' . $this->img, 95);         			imagedestroy($this->main);         			imagedestroy($this->target); 		} 	} 		$source       = "./img/1000.jpg"; 		$codeImg = new codeImg($source); 		$website = "http://www.baidu.com"; 		$codeurl = "./temp/code.png"; 		$codeImg->qrencode($website, $codeurl); 		################################# 		$text         = "开始了开始了hahhah呵呵"; 		$textwidth    = 100; 		$textherght   = 50; 		$generateFont = $codeImg->generateFont($source, $text, $textwidth, $textherght); 		########################################################## 		$sourcewidth  = 200; 		$sourceheight = 150; 		$generateImg  = $codeImg->generateImg($generateFont, $codeurl, $sourcewidth, $sourceheight); 		echo "<img src='" . $generateImg . "'>"; 	 	``		

更多相关知识,请访问PHP中文网!

以上就是教你用php将二维码和文字结合到一个背景图片上!的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: PHP
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:PHP方法处理微信昵称特殊符号过滤

相关资讯