|
@@ -0,0 +1,80 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace app\common;
|
|
|
+
|
|
|
+use Endroid\QrCode\Color\Color;
|
|
|
+use Endroid\QrCode\Encoding\Encoding;
|
|
|
+use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;
|
|
|
+use Endroid\QrCode\Label\Label;
|
|
|
+use Endroid\QrCode\Logo\Logo;
|
|
|
+use Endroid\QrCode\QrCode as QrCodeQrCode;
|
|
|
+use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
|
|
|
+use Endroid\QrCode\Writer\PngWriter;
|
|
|
+
|
|
|
+class Qrcode{
|
|
|
+ private $logo = null;
|
|
|
+ private $label = null;
|
|
|
+ private $size = 600;
|
|
|
+
|
|
|
+ public function __construct()
|
|
|
+ {
|
|
|
+ //
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置二维码LOGO
|
|
|
+ */
|
|
|
+ public function setLogo($logo_path)
|
|
|
+ {
|
|
|
+ $this->logo = Logo::create($logo_path) //logo的照片路径
|
|
|
+ ->setResizeToWidth(20); //logo的大小
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置二维码下方文字
|
|
|
+ */
|
|
|
+ public function setLabel($text)
|
|
|
+ {
|
|
|
+ $this->label = Label::create($text) //二维码下面的文字
|
|
|
+ ->setTextColor(new Color(0, 0, 0)); //文字的颜色
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成二维码
|
|
|
+ * @param string $url [链接]
|
|
|
+ * @return string [type] [返回图片path]
|
|
|
+ */
|
|
|
+ public function create(string $url,string $fileName)
|
|
|
+ {
|
|
|
+ $writer = new PngWriter();
|
|
|
+
|
|
|
+ $qrCode = QrCodeQrCode::create($url)//跳转的url地址
|
|
|
+ ->setEncoding(new Encoding('UTF-8')) //设置编码格式
|
|
|
+ ->setErrorCorrectionLevel(new ErrorCorrectionLevelLow()) //设置纠错级别为低
|
|
|
+ ->setSize($this->size) //大小
|
|
|
+ ->setMargin(20) //边距
|
|
|
+ ->setRoundBlockSizeMode(new RoundBlockSizeModeMargin()) //设置圆轮大小边距
|
|
|
+ ->setForegroundColor(new Color(0, 0, 0)) //前景色
|
|
|
+ ->setBackgroundColor(new Color(255, 255, 255)); //背景色
|
|
|
+
|
|
|
+ $result = $writer->write($qrCode, $this->logo, $this->label);
|
|
|
+
|
|
|
+ $result->getString();
|
|
|
+
|
|
|
+ $file_path = public_path() . "/storage/qrcode/";
|
|
|
+
|
|
|
+ if (!is_dir($file_path)) {
|
|
|
+ mkdir($file_path, 0755, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($fileName)){
|
|
|
+ $qrcode = $fileName.'.png';
|
|
|
+ }else{
|
|
|
+ $qrcode = time() . mt_rand(0, 9999). '.png';
|
|
|
+ }
|
|
|
+
|
|
|
+ $result->saveToFile($file_path . $qrcode);
|
|
|
+
|
|
|
+ return $file_path . $qrcode;
|
|
|
+ }
|
|
|
+}
|