• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php生成带二维码图片并强制下载实现代码

php 搞代码 3年前 (2022-01-22) 30次浏览 已收录 0个评论

本文主要和大家分享php生成带二维码图片并强制下载实现代码,希望能帮助到大家实现一个自己的二维码。

/* 下载二维码  */	public function 测试(){		// 接收传递的参数		$data['keys'] = [	'b01id'=>trim(I('get.b01id')),							'b02id'=>trim(I('get.b02id')),							'b03id'=>trim(I('get.b03id')),							'brid'=>trim(I('get.brid')),							'unicon'=>trim(I('get.unicon'))];		if(empty($data['keys']['b01id'])) $this->error('商户不存在',U('Seller/index'),3);		$res = D('Sellerbrcode')->download($data); //方法在下面		if(!is_array($res)) $this->error($res,U('Seller/index'),3);		if(!empty($res['error'])) $this->error($res['error'],U('Seller/seebrcode?'.$res['url']),3);		// 制作扫码牌		$bgimg = imagecreatefromstring(file_get_contents($res['bgimg']));	// 拿到背景图做画布		import('Component/phpqrcode',APP_PATH,'.php');       // 引入二维码生成类		// 如果有扫码123二维码,则生成扫码123二维码		if('' != $res['codea']){			/* 参数说明:			 * 参数1:二维码需要保持的值			 * 参数2:false代表直接输出,其他则是生成的文件名			 * 参数3:纠错级别:L、M、Q、H			 * 参数4:点的大小,数值越大图片越大			 * */			\QRcode::png($res['codea'], $res['codeimg'], 'H', 18);			/* 使用图片缩放方法			bool imagecopyresized($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h)					dst_im 目标图像链接的资源。					src_im 源图像链接的资源。					dst_x X坐标的目的地。					dst_y y坐标目的地。					src_x X坐标的源点。					src_y y坐标源点。					dst_w 目的地宽度。					dst_h 目标高度。					src_w 源宽度。					src_h 源高度。			 * */			$codeimg = imagecreatefromstring(file_get_contents($res['codeimg']));	// 拿到二维码图片			$bg_info = getimagesize($res['codeimg']);								// 得到原二维码图片的大小			imagecopyresized($bgimg,$codeimg,1520,550,0,70,700,666,$bg_info[0],$bg_info[1]-36);		}		// 如果存在银联云闪付二维码,则生成银联云闪付二维码图片		if('' != $res['codeb']){			\QRcode::png($res['codeb'], $res['paycodeimg'], 'H', 18);			$codeimg = imagecreatefromstring(file_get_contents($res['paycodeimg']));// 拿到二维码图片			$bg_info = getimagesize($res['paycodeimg']);							// 得到原二维码图片的大小			imagecopyresized($bgimg,$codeimg,236,536,0,80,750,670,$bg_info[0],$bg_info[1]-80);		}		// 如果存在商户推广二维码,则生成商户推广二维码图片		if('' != $res['codec']){			\QRcode::png($res['codec'], $res['bridimg'], 'H', 18);			$codeimg = imagecreatefromstring(file_get_contents($res['bridimg']));	// 拿到二维码图片			$bg_info = getimagesize($res['bridimg']);								// 得到原二维码图片的大小			imagecopyresized($bgimg,$codeimg,1375,1288,0,0,230,230,$bg_info[0],$bg_info[1]);		}		// 如果存在商户名称		if('' != $res['bName']){			// 为了让文字居中,需要计算左偏移量			preg_match_all("/[0-9]{1}/",$res['bName'],$len1);					// 得到字符串中的字数量			preg_match_all("/[a-zA-Z]{1}/",$res['bName'],$len2);				// 得到字符串中的字母数量			preg_match_all("/([\x{4e00}-\x{9fa5}]){1}/u",$res['bName'],$len3);	// 得到字符串中的中文数量			$left = 610 - (count($len1[0]) * 16) - (count($len2[0]) * 15) - (count($len3[0]) * 28);			$res['filename'] .= '_' . $res['bName'];							// 追加二维码名称			$black = imagecolorallocate($bgimg, 0x20, 0x57, 0xa0);				// 字体颜色			imagefttext($bgimg, 42, 0, $left, 480, $black,'./Public/font/msyh.ttf',$res['bName']);		}		// 如果存在二维码编号,则写入二维码编号		if('' != $res['brid']){			$black = imagecolorallocate($bgimg, 0x3e, 0x75, 0xc7);				//字体颜色			imagefttext($bgimg, 30, 0, 1720,1190, $black,'./Public/font/msyh.ttf',$res['brid']);		}		// 添加银联云闪付logo		$codeimg = imagecreatefromstring(file_get_contents($res['union']));		// 拿到二维码图片		$bg_info = getimagesize($res['union']);									// 得到原logo图片的大小		imagecopyresized($bgimg,$codeimg,550,760,0,0,120,120*$bg_info[1]/$bg_info[0],$bg_info[0],$bg_info[1]);		// 添加添加扫码123logo		$codeimg = imagecreatefromstring(file_get_contents($res['logo']));		// 拿到二维码图片		$bg_info = getimagesize($res['logo']);									// 得到原logo图片的大小		imagecopyresized($bgimg,$codeimg,1805,770,0,0,120,120*$bg_info[1]/$bg_info[0],$bg_info[0],$bg_info[1]);		$res['filename'] .= '_' . date('Y-m-d',time()) . '.png';				// 追加二维码名称		header('Pragma: public'); 	// required		header('Expires: 0'); 		// no cache		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');		header('Cache-Control: private',false);		header('Content-Type: application/force-download');		header('Content-Disposition: attachment; filename="'.$res['filename'].'"');		header('Content-Transfer-Encoding: binary');		header('Connection: close');		imagepng($bgimg);	}
/* 生成图片前 拼接数据  */public function download($data){$tool  = D('Tool');// 得到公共类$mysql = M();$admin = I('session.admin');/* 拼接url,方便以下错误时,跳转使用 */ $show['url'] = 'b01id='.$data['keys']['b01id'];// 如果传递了用户id,那么判断该用户是否属于该商户if($data['keys']['b03id']) $show['url'].= '&b03id='.$data['keys']['b03id'];// 如果传递了二维码idif($data['keys']['b02id']) $show['url'].= '&b02id='.$data['keys']['b02id'];// 如果传递了银联云闪付if($data['keys']['unicon']) $show['url'].= '&unicon='.$data['keys']['unicon'];// 如果传递了推广二维码if($data['keys']['brid']) $show['url'].= '&brid='.$data['keys']['brid'];// 调用上部方法得到数据$data = $this->seebrcode($data,$tool,$mysql,$admin,false);if(!is_array($data)){ return ['error'=>$data,'url'=>$show['url']]; }/* 得到要展示的数据*/$show['bgimg'] = './Public/img/qrcode/qrcode.png';// 背景图片地址$show['logo'] = './Public/img/qrcode/logo.png';// 扫码123的logo地址$show['union']   = './Public/img/qrcode/unionPay.png';// 银联logo地址$show['codeimg'] = './Public/img/qrcode/code.png';// 普通二维码生成的保存地址$show['paycodeimg'] = './Public/img/qrcode/paycode.png';// 银联二维码生成的保存地址$show['bridimg'] = './Public/img/qrcode/brid.png';// 商户推广二维码图片的保存地址$show['filename']= '扫码123收款二维码';// 二维码名称// 扫码123二维码内容$show['codea'] = (!$data['keys']['b02id'])  ? '' : isset($data['qrcode'][$data['keys']['b02id']])  ? $data['url1'].$data['qrcode'][$data['keys']['b02id']]['brCode'] : '';// 扫码123二维码编号$show['brid'] = (!$data['keys']['b02id'])  ? '' : isset($data['qrcode'][$data['keys']['b02id']])  ? 'NO.'.$data['keys']['b02id'] : '';// 银联二维码$show['codeb'] = (!$data['keys']['unicon']) ? '' : isset($data['qrcode'][$data['keys']['unicon']]) ? $data['qrcode'][$data['keys']['unicon']]['brCode'] : '';// 商户推广二维码$show['codec'] = (!$data['keys']['brid']) ? '' : isset($data['download'][$data['keys']['brid']]) ? $data['url2'].$data['download'][$data['keys']['brid']]['brCode'] : '';// 商户名称$show['bName'] = empty($data['seller']['bShortName']) ? (empty($data['seller']['bName']) ? (empty($data['seller']['bCode']) ? $data['seller']['b01id'] : $data['seller']['bCode']) : $data['seller']['bName'] ) : $data['seller']['bShortName'];/* 如果存在旧图片,则删除旧图片 */if(is_file($res['codeimg'])) unlink($res['codeimg']); // 删除旧的扫码123二维码图片if(is_file($res['paycodeimg'])) unlink($res['paycodeimg']); // 删除旧的银联云闪付二维码图片if(is_file($res['paycodeimg'])) unlink($res['paycodeimg']); // 删除旧的商户推广二维码图片return $show;}

相关推荐:

Laravel使来4源gaodaimacom搞#代%码*网搞代gaodaima码用PHPQRCODE生成带有LOGO的二维码图片

JavaScript实现的微信二维码图片生成器的示例

php生成二维码图片方法汇总

以上就是php生成带二维码图片并强制下载实现代码的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php生成带二维码图片并强制下载实现代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址