Thinkphp5+ phpqrcode 在线批量生成二维码图片并保存在本地

it2025-01-12  6

第一步: 首先需要先下载phpqrcode包,解压在项目中,我们只用到 phpqrcode.php 文件就可以;

phpqrcode下载链接为: http://phpqrcode.sourceforge.net/

第二步: 我放在了vendor文件夹中,位置大家随意,只要能成功引入即可;

第三步: 写方法,这里主要介绍一下 ajax_add 方法传入需要生成的数量-->num ;  因为我的项目需求二维码需要跟用户绑定,所以status为绑定状态,如果大家不需要的话可以将没有用的字段删除! 

$image_path: 这里是图片生成后保存在项目中的位置(因为后续需要用到这里,所以我将图片保存位置拆分了);这里要特别强调一下: 设置路径的时候千万不要设置为 /uploads/..  这样的,要把uploads前面的/去掉,因为ROOT_PATH 后面跟了\ 如果我们手动再写入/就会冲突,二维码无法生成

$file_path: 这里需要加入 ROOT_PATH拼接上面已经设置好的图片在项目中保存的位置,生成完整的在服务器中保存的路径

思路: for循环传入的需要生成的数量,首先创建数据,然后再调用生成二维码图片的方法根据返回的数据id将二维码图片的路径更新到数据库中

$url: 这里是生成二维码的链接以及参数; 链接必须要加 http:// 或者 https://

$filename: 这里是生成二维码的图片名称以及图片路径,可以设置为false,如果设置为false就不会生成图片了,因为项目需要,所以这里我设置了图片名称

public function ajax_add(){         $num=$this->request->post('num');         $data['create_time'] = date('Y-m-d',time());         $data['status'] = 2;         $image_path = 'uploads/qrcode/';         $file_path = ROOT_PATH . $image_path;         for ($i=1; $i<=$num; $i++)         {             $id = Db::name('qrcode')->insertGetId($data);             $url = "https://xxxx.com/index/index?id=$id";             $filename = $image_path . $id . '.png';             $this->qrcode($url,$filename,3,6);             $image['qrcode'] = $image_path.$id.'.png';             Db::name('qrcode')->where(['id' => $id])->update($image);         }                  return json(['code' => 1, 'msg' => '生成成功,请稍后']);              }

 这里的方法为调用phpqrcode.php,传入参数,生成图片;

$level:  容错级别,一般情况下按照我的参数生成的二维码扫描没有问题;

$size: 二维码大小

 function qrcode($url,$filename,$level,$size)       {           Vendor('PHPQrcode.phpqrcode');         //容错级别           $errorCorrectionLevel = intval($level);         //生成图片大小           $matrixPointSize = intval($size);         //生成二维码图片           $Qrcode = new \QRcode();         //第二个参数false的意思是不生成图片文件,如果你写上‘picture.png’则会在根目录下生成一个png格式的图片文件           $Qrcode->png($url, $filename, $errorCorrectionLevel, $matrixPointSize, 2);     }

 现在,你试试是不是就生成成功啦?

最新回复(0)