第一种方法找网上的api接口
比如:联图
品味二维码:
草料:
其他都可以在网上搜到很多,但是这些api可能过一段时间会失效,以前就遇到过这样的情况,这就接口不可控性太大,所以我们要介绍第二种方法
二、用插件生成二维码
这里使用的是PHPQRcode 新建函数(这里用的thinkPhp框架)
/**
* 生成二维码
* @param $save_path 二维码保存路径
* @param string $qr_data 手机扫描后要跳转的网址
* @param string $qr_level 默认纠错比例 分为L、M、Q、H四个等级,H代表最高纠错能力
* @param int $qr_size 二维码图大小,1-10可选,数字越大图片尺寸越大
* @param string $save_prefix 图片名称前缀
* @return bool|string
*/
function createQRcode($save_path, $qr_data = 'PHP QR Code :)', $qr_level = 'L', $qr_size = 4, $save_prefix = 'qrcode') {
if (!isset($save_path)) return '';
//设置生成png图片的路径
$PNG_TEMP_DIR = & $save_path;
//导入二维码核心程序
vendor('PHPQRcode.class#phpqrcode'); //PHPQRcode是文件夹名字,class#phpqrcode就代表class.phpqrcode.php文件名
//检测并创建生成文件夹
if (!file_exists($PNG_TEMP_DIR)) {
mkdir($PNG_TEMP_DIR);
}
$filename = $PNG_TEMP_DIR . 'test.png';
$errorCorrectionLevel = 'L';
if (isset($qr_level) && in_array($qr_level, array('L', 'M', 'Q', 'H'))) {
$errorCorrectionLevel = & $qr_level;
}
$matrixPointSize = 4;
if (isset($qr_size)) {
$matrixPointSize = & min(max((int)$qr_size, 1), 10);
}
if (isset($qr_data)) {
if (trim($qr_data) == '') {
die('data cannot be empty!');
}
//生成文件名 文件路径+图片名字前缀+md5(名称)+.png
$filename = $PNG_TEMP_DIR . $save_prefix . md5($qr_data . '|' . $errorCorrectionLevel . '|' . $matrixPointSize) . '.png';
//开始生成
QRcode::png($qr_data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
} else {
//默认生成
QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);
}
if (file_exists($PNG_TEMP_DIR . basename($filename))) {
return basename($filename);
} else {
return FALSE;
}
}
函数调用
$save_path = 'Qrcode/'; //图片存储的绝对路径
$qr_data = C('PROTOCOL') . $_SERVER['SERVER_NAME'] . . '/Share/member.html?str=' . $member['mstr'];
$qr_level = 'H';
$qr_size = '10';
$save_prefix = 'ZETA';
$filename = createQRcode($save_path, $qr_data, $qr_level, $qr_size, $save_prefix);
if ($filename) {
$pic = . '/' . $save_path . $filename;
}
$this->pic = $pic;
如何在利用PHPQRcode生成的二维码中间加上logo图片呢
$logo = . $member['picture']; //logo的图片地址
import("Org.Util.File");
$file = new \File($logo);
$logo = $file->getRealFile();
$file = new \File($pic);
$QR = $file->getRealFile();; //二维码图片地址
if ($logo !== FALSE) {
$QR = imagecreatefromstring(file_get_contents($QR));
$logo = imagecreatefromstring(file_get_contents($logo));
$QR_width = imagesx($QR);
$QR_height = imagesy($QR);
$logo_width = imagesx($logo);
$logo_height = imagesy($logo);
$logo_qr_width = $QR_width / 5;
$scale = $logo_width / $logo_qr_width;
$logo_qr_height = $logo_height / $scale;
$from_width = ($QR_width - $logo_qr_width) / 2;
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
}
imagepng($QR, $save_path . $filename); //跟logo合并之后的地址