app做活动的时候需要用到二维码去做推广,用户打开app某一页面生成二维码,分享出去或者其他人扫码之后打开一个URL地址中有get来源id,实现用户的关联
需要 composer
使用版本为thinkphp5,在根目录下敲引入类库命令
composer require endroid/qrcode
依赖之后会再对应的vender目录下出现几个文件,他们是相互依赖关系,请勿手动删除其中的类库文件
在需要的地方直接调用
$qrCode = new QrCode\QrCode();//创建生成二维码对象
$qrCode->setText($url)
->setSize(450)
->setMargin(10)
->setLogoPath($base_path . $config['logo_path'])
->setLogoWidth($config['logo_width'])
->setErrorCorrectionLevel('medium')
->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
->writeFile($code_path);
当然,你的头部需要引入文件
use Endroid\QrCode;
解释下上面的参数设置,因为考虑到不同的活动生成的二维码的Logo大小,图片,啥的不一样,所以我把活动配置存在一个表中,根据活动ID去读取对应的配置,
也可以把这些数据定义个数组写在代码中。
其中功能比较强大,所以设置的参数也比较多,根据自己需要设置
这里罗列下我看的懂的几个参数,也算给自己做个笔记吧。
函数名 | 描述 | 示例 |
setText | 设置文本,这里一般是使用url地址来生成二维码 | http://loveteemo.com |
setSize | 设置二维码的大小,这里二维码应该是正方形的,所以相当于长宽 | 400 |
setMargin | 设置二维码边距 | 10 |
setForegroundColor | 设置前景色,RGB颜色 | array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0) |
setBackgroundColor | 设置背景色,RGB颜色 | array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0) |
setEncoding | 设置编码 | utf8 |
setErrorCorrectionLevel | 设置错误级别(low / medium / quartile / high) | high |
setLogoPath | 设置logo路径 | logo.png |
setLogoWidth | 设置logo大小 | 50 |
setLabel | 设置标签 | loveteemo |
setLabelFontSize | 设置标签字体大小 | 16 |
setLabelFontPath | 设置标签字体路径 | |
setLabelAlignment | 设置标签对齐方式(left / center / right) | center |
setLabelMargin | 设置标签边距 | array('t' => 10,'r' => 20,'b' => 10,'l' => 30) |
setWriterRegistry | ||
setWriter | ||
setWriterByName | ||
setWriterByPath | ||
setWriterByExtension | ||
setValidateResult | ||
writeString | ||
writeDataUri | ||
writeFile | 写入文件 | test.png |
生成完二维码后,活动还需要合并二维码图片到活动背景图上。
下面就是原生的PHP图片操作了。
file_get_contents 将文件读入字符串
imagecreatefromstring 从字符串的图像流新建图像 为了使用 imagecopymerge 转换
imagecopymerge 拷贝合并图片的一部分 参数为 被写入图, 写入图, 被写入图的起点X轴,被写入图的起点Y轴,写入图的X轴起点,写入图的Y轴起点,写入图的X轴终点,写入图的Y轴终点,透明度
// 2 根据活动合成对应的效果图
$background_img = imagecreatefromstring(file_get_contents($base_path . $config['bg_path']));
$qrcode_img = imagecreatefromstring(file_get_contents($code_path));
list($qrcode_img_width, $qrcode_img_hight) = getimagesize($code_path);
imagecopymerge($background_img, $qrcode_img, $config['position_x'], $config['position_y'], 0, 0, $qrcode_img_width, $qrcode_img_hight, 100);
imagejpeg($background_img, $save_path);
imagedestroy($background_img);
unlink($code_path);//删除二维码
// 3 上传到oss
$oss_code = uploadOssImageurl($save_path);
unlink($save_path);
下一篇: 微信小程序笔记...