本文主要和大家分享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"/[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'];
// 如果传递了二维码id
if($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']) "color: #ff0000">总结

以上所述是小编给大家介绍的php生成带二维码图片并强制下载实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

标签:
php,生成二维码图片,php,生成二维码

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com