使用扩展 Endroid\qrcode;
生成二维码
$qrCode = new QrCode(); $qrCode->setText('Life is too short to be generating QR codes') // 一般设置地址 ->setSize(300) ->setPadding(10) ->setErrorCorrection('high') ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]) ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]) ->setLabel('Scan the code') // 下面的字 好像不支持中文 ->setLabelFontSize(16) ->setImageType(QrCode::IMAGE_TYPE_PNG); header('Content-Type: '.$qrCode->getContentType()); $qrCode->render(); // 渲染图片 需要加上exit; 不然就是乱码 $qrCode->save('qrcode.png'); // 图片保存路径 需要保存就用这个 exit;
生成海报二维码(组装图片)
$qrCode = new QrCode(); $qrCode->setText('Life is too short to be generating QR codes') // 一般设置地址 ->setSize(180) ->setPadding(10) ->setErrorCorrection('high') ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]) ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]) // ->setLabel('Scan the code') // 下面的字 好像不支持中文 ->setLabelFontSize(16) ->setImageType(QrCode::IMAGE_TYPE_PNG); header('Content-Type: '.$qrCode->getContentType()); $content=".\upload\shareqc\qrcodes.png"; $qrCode->save($content); // 图片保存路径 // 组装合成图片 生成海报 $path_1 = '.\upload\shareqc\1.jpeg'; // 背景图片 $path_2 = $content; // 二维码图片 $image_1 = imagecreatefromjpeg($path_1); // 注意图片后缀 $image_2 = imagecreatefrompng($path_2); // 注意图片后缀 $image_3 = imageCreatetruecolor(imagesx($image_1), imagesy($image_1)); $color = imagecolorallocate($image_3, 255, 255, 255); imagefill($image_3, 0, 0, $color); imageColorTransparent($image_3, $color); imagecopyresampled($image_3, $image_1, 0, 0, 0, 0, imagesx($image_1), imagesy($image_1), imagesx($image_1), imagesy($image_1)); imagecopymerge($image_3, $image_2, 260, 410, 0, 0, imagesx($image_2), imagesy($image_2), 100); // 调整图片位置 左上方就是0.0 位置 自己根据大小设置 260.410 $img_url = './upload/shareqc/' . time() . ".jpeg"; // 生成图片名字地址 $res = imagejpeg($image_3, $img_url); // 存储图片是否成功 成功返回true 以上海报制作完成 可以添加文字 如下面所示
给海报添加文字
putenv('GDFONTPATH=' . realpath('.')); //设置字体路径 $qrCode = new QrCode(); $qrCode->setText('Life is too short to be generating QR codes') // 一般设置地址 ->setSize(180) ->setPadding(10) ->setErrorCorrection('high') ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]) ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]) // ->setLabel('Scan the code') // 下面的字 好像不支持中文 ->setLabelFontSize(16) ->setImageType(QrCode::IMAGE_TYPE_PNG); header('Content-Type: '.$qrCode->getContentType()); $content=".\upload\shareqc\qrcodes.png"; $qrCode->save($content); // 图片保存路径 // 组装合成图片 生成海报 $path_1 = '.\upload\shareqc\1.jpeg'; // 背景图片 $path_2 = $content; // 二维码图片 $image_1 = imagecreatefromjpeg($path_1); // 注意图片后缀 $image_2 = imagecreatefrompng($path_2); // 注意图片后缀 $image_3 = imageCreatetruecolor(imagesx($image_1), imagesy($image_1)); $color = imagecolorallocate($image_3, 255, 255, 255); imagefill($image_3, 0, 0, $color); imageColorTransparent($image_3, $color); imagecopyresampled($image_3, $image_1, 0, 0, 0, 0, imagesx($image_1), imagesy($image_1), imagesx($image_1), imagesy($image_1)); imagecopymerge($image_3, $image_2, 260, 410, 0, 0, imagesx($image_2), imagesy($image_2), 100); // 调整图片位置 左上方就是0.0 位置 自己根据大小设置 260.410 $img_url = './upload/shareqc/' . time() . ".jpeg"; // 生成图片名字地址 $res = imagejpeg($image_3, $img_url); // 存储图片是否成功 成功返回true // 添加文字 $dst = imagecreatefromstring(file_get_contents($img_url)); /*操作图片*/ //1.设置字体的路径 $font = "msyh.ttf"; // 放在piblic 下面 最前面加上这句话设置路径的putenv('GDFONTPATH=' . realpath('.')); //设置字体路径 //4.写入文字 // 画布资源 字体大小 旋转角度 x轴 y轴 字体颜色 字体文件 需要渲染的字符串 $black = imagecolorallocate($dst, 255, 255, 255); //字体颜色 imagefttext($dst, 30, 0, 380, 1300, $black, $font, '扫一扫,关注我们'); $img_add_url = './upload/shareqc/' . time() . ".jpeg"; $res = imagejpeg($dst, $img_add_url);
大致效果 网上随便找的图 将就用一下